Celery Python 中的异步子任务



我需要将芹菜中的子任务异步调用到另一个工作线程(在另一台机器上),如下所示:

#db.py
@task()
def query(x,y):
   ...something
   return z
#worker2.py
@task()
def main(x,y):
   result=db.query.async((x,y), queue='db')
   try:
       a=result.get(timeout=5)
   except celery.exceptions.TimeoutError:
       ....

但是我在启动工人时收到警告:运行时警告:永远不要在任务中调用 result.get()!

如何从另一个任务调用异步任务?我不会使用链条、和弦等。

你永远不想阻止一个任务来等待另一个任务,所以正确的方法是使用 chain:

db.py
@task()
def query(x, y):
   ...something
   return z
#worker2.py
@task()
def main(resultFromQuery, x, y):
   a = resultFromQuery.get(timeout=5)
   ...
res = chain(query.s(x,y), main.s(x,y));
res.get()

相关内容

  • 没有找到相关文章

最新更新