Сложное полотно застревает в середине
Настройка: 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)
Ссылка: проблема в github