【发布时间】:2013-08-13 02:35:55
【问题描述】:
也许我对芹菜有误解,但我已经坚持了很长时间。
我有一堆简单的子任务,我想并行运行,我想在它们完成时对其进行迭代,而不是等待它们全部完成。我试过这个:
def task_generator():
for row in db:
yield mytask.s(row)
from celery.result import ResultSet
r = ResultSet(t.delay() for t in task_generator())
for result in r.iterate():
print result
但是 celery 首先运行所有任务,并且只有在所有任务完成后才开始迭代,尽管 ResultSet.iterate 的文档阅读 "Iterate over the return values of the tasks as they finish one by one."
那么我如何在任务结果完成时对其进行迭代?
【问题讨论】: