【发布时间】:2015-07-02 08:27:43
【问题描述】:
我们正在使用 Celery 实施工作流程。首先,我们需要并行运行一些任务,当它们都完成后,我们需要运行单个任务。
看来我们可以使用和弦,或者组和链:
chord(tasks, task)
对
group(tasks) | task
这两者之间的确切区别是什么?他们似乎在做同样的事情。
【问题讨论】:
标签: python celery celery-canvas
我们正在使用 Celery 实施工作流程。首先,我们需要并行运行一些任务,当它们都完成后,我们需要运行单个任务。
看来我们可以使用和弦,或者组和链:
chord(tasks, task)
对
group(tasks) | task
这两者之间的确切区别是什么?他们似乎在做同样的事情。
【问题讨论】:
标签: python celery celery-canvas
Canvas docs 说:
将一个组与另一个任务链接在一起会自动将其升级为和弦:
>>> c3 = (group(add.s(i, i) for i in xrange(10)) | xsum.s()) >>> res = c3() >>> res.get() 90
【讨论】:
来自 Canvas 文档:
组原语是一个签名,它采用应并行应用的任务列表。
链原语让我们将签名链接在一起,以便一个接一个地调用,本质上形成一个回调链。
和弦就像一个组,但有一个回调。一个和弦由一个标题组和一个正文组成,其中正文是一个任务,应该在标题中的所有任务完成后执行。
【讨论】: