设置: Celery 4.1.0,经纪人= RabbitMQ 3.6.5,后端= Redis 3.2.5
考虑以下画布:
celery worker -A worker.celeryapp:app -l info -Q default -c 2 -n defaultworker@%h -Ofair
@app.task(name='task_1',
bind=True,
base=MyConnectionHolderTask)
def task_1(self, feed_id, flow_id, **kwargs):
do_something()
task_1 = t_1.si(feed_id, flow_id)
.
.
task_13 = t_13.si(feed_id, flow_id)
(task_1 |
group((task_2 | group(task_3, task_4)),
task_5,
task_6,
task_7,
task_8) |
task_9 |
task_10 |
task_11 |
task_12 |
task_13).apply_async(link_error=unlock)
意味着我有一系列任务,其中一个任务是一组多个任务,其中一个是大小为2的链(后一个任务为2个组)。
所有任务都成功,所以期待完成,直到task_13
task_4是最后一次运行。 task_9和其余的(10..13)没有运行。 如果我取消task_3&组task_4它确实有效(直到13):
(task_1 |
group((task_2 | task_3 | task_4),
task_5,
task_6,
task_7,
task_8) |
task_9 |
task_10 |
task_11 |
task_12 |
task_13).apply_async(link_error=unlock)