我是 Python Celery 的新手,正在尝试使用 Celery 执行工作流。工作流程:Task workflow
在所附的图片中,我试图展示下面用文字解释的工作流程。
- 客户端调用 Task-1。
- Task-1 成功时,Task-2 和 Task-3(同时)执行,如果 Task-1 失败则执行 Task-4。
- Task-2 成功时,Task-5 和 Task-6(同时)执行,如果 Task-2 失败则执行 Task-7。
- Task-5 成功时,会(同时)执行大量(100 多个)Task-8,如果 Task-5 失败,则执行 Task-9。
当客户端调用 Task-1 时,它传递一个参数,在成功和失败的情况下需要传递给下一个任务。
我了解到 Canvas 可用于与 Celery 一起设计工作流程。但是,我无法弄清楚如何处理如此大的工作流程,其中包含不同层次的成功和失败。请建议我应该如何使用 Celery 和 Canvas 来规划这样的工作流程。 教程或示例的任何链接也将是一个很大的帮助。
最佳答案
你试过这样的事情吗? (伪代码)
workflow = (t1.s().set(link_error=t4.s()) |
group((t2.s().set(link_error=t7.s()) |
group(t6.s(),
(t5.s().set(link_error=t9.s()) |
group(t8.s(i) for i in xrange(100)))),
t3.s())
)
).apply_async()
link_error 是错误的回调。
http://docs.celeryproject.org/en/latest/userguide/canvas.html
关于Python Celery 任务工作流执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576518/