Asynchonous子任务
问题描述:
我需要芹菜异步调用子任务对另一个人(另一台机器上)这样的:Asynchonous子任务
#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 ()在一个任务!
如何从另一个任务调用异步任务?我wont'n使用链,和弦等
答
,就算你想阻止一个任务等待另一个,所以正确的做法是用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()
+0
但我需要从另一个任务调用子任务,而不是从主程序 这是系统,我不kwow开始的确切工作流:( –
+0
然后不要调用'result.get() ' - 你需要第二项任务的结果吗? – scytale
正确的做法是用链条。你为什么不能使用它? – nstoitsev
我尝试链现在: res = chain(db.query.s(x,y))() print(res.get()) 我得到**从不在任务中调用result.get()! **再次:( –