【发布时间】:2016-03-04 07:44:28
【问题描述】:
我需要 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.TimeoutError:
....
但我在启动工人时收到警告: RuntimeWarning:切勿在任务中调用 result.get()!
如何从另一个任务调用异步任务?我不会使用链,和弦等。
【问题讨论】:
-
正确的做法是使用链式。为什么不能用?
-
我现在尝试了链: res = chain(db.query.s(x, y))() print(res.get()) 并且我得到 ** Never call result.get()在任务中!** 再次:(
-
这里有同样的问题。 Celery 在固定场景中表现不错,您从一开始就知道将要执行什么,但是当场景是动态的时,我遇到了这个问题并且它会阻止工作人员