这是将芹菜用于管道的最佳方法: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()