芹菜Python中的异步子任务

芹菜Python中的异步子任务,python,celery,Python,Celery,我需要芹菜中的异步调用子任务到另一个工人(在另一台机器上),如下所示: #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.TimeoutE

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

#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:
       ....
但我在开始工作时收到警告: RuntimeWarning:永远不要在任务中调用result.get()


如何从另一个任务调用异步任务?我不会使用chain、chord等工具。

您永远不想阻止一项任务等待另一项任务,因此正确的方法是使用:


正确的方法是使用链条。为什么您不能使用它?我现在尝试了chain:res=chain(db.query.s(x,y))()print(res.get())并且我得到**在任务中从不调用result.get()再次:(但我需要从另一个任务调用子任务。而不是从主程序。在这个系统中,我一开始不知道确切的工作流程:(然后不要调用
result.get()
)-您需要第二个任务的结果吗?
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()