使用芹菜作为管道



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

最新更新