我有三项任务:
@app.task(name='timey')
def timey():
print "timey"
while True:
pass
return 1
@app.task(name='endtimey')
def endtimey():
for i in range(10):
print "ENDTIMEY", time()
sleep(3)
return 1
@app.task(name='nexttask')
def nexttask(n):
print "NEXT TASK"
return 1
Run Code Online (Sandbox Code Playgroud)
如果我唯一做的就是将 endtimey 和 nexttask 链接在一起 -
chain(endtimey.s() | nexttask.s()).delay()
一切都按预期进行。我在芹菜日志中看到ENDTIMEY <current time>打印十次。NEXT TASK但是,如果我用无限任务填充 7 个工人timey,然后将其链接endtimey在一起nexttask-
for i in range(7):
timey.s().delay()
chain(endtimey.s() | nexttask.s()).delay()
Run Code Online (Sandbox Code Playgroud)
所有timey任务将由 8 个工作线程中的 7 个接收,并endtimey在第 8 个工作线程上运行,之后日志将显示nexttask已收到,但nexttask不会运行。 …