Сложное полотно застревает в середине

Настройка: 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

0 ответов

Другие вопросы по тегам