将芹菜用于管道

问题描述 投票:4回答:1

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

也许我不应该将芹菜用于此类任务...

python celery
1个回答
4
投票

如其他评论者所述,您可以使用链。有关更多信息,请参见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()
© www.soinside.com 2019 - 2024. All rights reserved.