Python Celery 任务工作流执行

标签 python canvas error-handling celery

我是 Python Celery 的新手,正在尝试使用 Celery 执行工作流。工作流程:Task workflow

在所附的图片中,我试图展示下面用文字解释的工作流程。

  1. 客户端调用 Task-1。
  2. Task-1 成功时,Task-2 和 Task-3(同时)执行,如果 Task-1 失败则执行 Task-4。
  3. Task-2 成功时,Task-5 和 Task-6(同时)执行,如果 Task-2 失败则执行 Task-7。
  4. 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/

相关文章:

python - Python 中的 for 循环问题中的 Tkinter 按钮

javascript - 使用 src blob Canvas 到 img

php - Codeigniter 在没有 num_rows() 的情况下处理数据库错误

python 2.7 用字典中的值替换 raw_input 字符串

Python: float 在 "e"之前得到部分

带有 2 个 png 图像的 Python PIL 粘贴

javascript - HTML5 Canvas 访问控制允许来源错误

javascript - 算法 - O(1) 检查鼠标是否悬停在圆圈数组之一上

python - 为什么在 except 子句中使用 `or` 不会导致 SyntaxError?它有有效的用途吗?

mongodb - 从 Haskell MongoDB 驱动程序中检索错误状态