这是在管道上使用Celery的最佳方法:TaskA-> TaskB-> TaskC?请不要这么快就投下反对票,我对Celery一无所知,并且该文档并没有太多地解释在实际应用中应该如何做.感谢您的评论.
@app.task
def taskA(t_id):
if success:
TaskB.delay(t_id)
else:
ReportError.delay(t_id)
@app.task
def taskAA(t_id):
if success:
TaskB.delay(t_id)
else:
ReportError.delay(t_id)
@app.task
def taskB(t_id):
if success:
TaskC.delay(t_id)
else:
ReportError.delay(t_id)
也许我不应该将芹菜用于此类任务…
解决方法:
如其他评论者所述,您可以使用链.有关更多信息,请参见https://celery.readthedocs.org/en/latest/userguide/canvas.html#chains.根据您的原始问题,如下所示:
from celery import chain
ret = chain(taskA.s(), taskB.s(), taskC.s()).apply_async()
if ret.status == u'SUCCESS':
print "result:", ret.get()