Python-将芹菜用于管道

这是在管道上使用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()
上一篇:Celery学习之旅


下一篇:芹菜工人不填补并发插槽