Python 芹菜从子任务发出任务
我的“大”任务分步骤工作:它可以终止或生成更多任务。在我的例子中,我数到5Python 芹菜从子任务发出任务,python,asynchronous,celery,Python,Asynchronous,Celery,我的“大”任务分步骤工作:它可以终止或生成更多任务。在我的例子中,我数到5 from celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') from time import sleep @app.task def slow_add(x): """Slowly counts to 5""" sleep(1) print (x) if x == 5:
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
from time import sleep
@app.task
def slow_add(x):
"""Slowly counts to 5"""
sleep(1)
print (x)
if x == 5:
return x
else:
return slow_add.s(x+1)()
当我安排任务时,我只得到一次调用:
In [48]: asks.slow_add.run(1)
1
2
3
4
5
Out[48]: 5
@app.task
def test(x):
import time
time.sleep(1)
print x
if x == 5:
return x
else:
return test.delay(x+1)
res=test.delay(1)
1
接收到的任务:服务。任务器。测试[9eed6d45-4931-4790-8477-3bbe75e213e4]
任务服务.tasker.test[67f22e02-7c39-4c1d-a646-acabeb72d208]在3.021544273s中成功:无
2
res.ready()
获取任务状态,任务完成时返回True
,否则返回False
>>> res = test.delay(1)
>>> res.ready() # before finishing task
False
>>> res.ready() # after finishing task
True
或
并使用上面的方法
>>> print final_result(res)
5
在这种情况下,我无法获得原始命令的结果。也就是说,1秒钟后就完成了,但是我如何得到5分呢?不,我的问题措词不当。任务在1次迭代后完成;芹菜只是在没有链接到父芹菜的情况下产生一个新芹菜。如何获取上一个任务的异步处理程序?换句话说,您的示例确实符合我的要求:创建5个任务。但最后我只对最后一个的结果感兴趣(如果我有把握的话,我可以得到)。
>>> print final_result(res)
5