也许我对芹菜有误解,但我已经坚持了很长一段时间。
我有一堆简单的子任务,我想并行运行,我想在它们完成时对其进行迭代,而不是等待它们全部完成。我试过这个:
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."
那么如何在任务结果完成时对其进行迭代呢?