我的“大”任务可以分步骤工作:它可以终止任务,也可以生成更多任务。在我的例子中,我数到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发布于 2014-02-05 12:05:39
以我为例,
@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)时,它异步地工作。res.ready()获取任务状态,任务完成后返回True,否则返回False。在我的测试用例中,结果如下
>>> res = test.delay(1)
>>> res.ready() # before finishing task
False
>>> res.ready() # after finishing task
True或
def final_result(r):
if isinstance(r.result, celery.result.AsyncResult):
return final_result(r.result)
else:
return r.result并在上面使用
>>> print final_result(res)
5https://stackoverflow.com/questions/21574624
复制相似问题