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