这是使用 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)
Run Code Online (Sandbox Code Playgroud)
也许我不应该使用 Celery 来完成这种任务......
正如其他评论者所说,您可以使用链。请参阅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()
Run Code Online (Sandbox Code Playgroud)