这是使用芹菜管道的最佳方式:TaskA -> TaskB -> TaskC吗?我对芹菜一无所知,而且它的文档也没有解释在实际应用中应该怎么做。
@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()