0
因此,我现在一直在使用celery v3.x并考虑从正式迁移到v4之后迁移到v4。现在,我正在使用通过PyPI提供的v4.0.2。有两个版本数不匹配,但让我困惑的一个是这样的:使用redis后端的芹菜v4组任务行为
这是我的任务文件:
from celery import group, chord
from worker import app
@app.task(name='task')
def task(i):
return i
@app.task(name='remaining')
def dummy(result):
print result
@app.task(name='mainTask')
def mainTask():
groupTask = group([task.s(i) for i in range(0,10)])
job = chord(groupTask, dummy.s())()
return job
当我打电话mainTask
,随后组任务也得到执行,但当我尝试通过dummy
打印此任务的结果时,结果顺序变得混乱。输出示例如下:
[0, 1, 2, 3, 4, 8, 6, 9, 7, 5]
奇怪的是,只有当结果后端是redis时才会发生这种情况。在使用amqp时,结果将按照如下精确顺序显示:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
P.S.,此行为在旧版本的芹菜中不存在。 Redis以及amqp以正确的顺序返回结果。有什么我失踪?