Автоматическое перемещение цепочки Celery в очередь недоставленных сообщений при сбое выполнения задачи - PullRequest
6 голосов
/ 06 августа 2020

Я использую Celery с RabbitMQ, и у меня есть цепочка с 4 задачами и группой. Группа находится на вершине цепочки, и в ней около 1 тыс. Задач.

У меня установлена ​​очередь недоставленных сообщений, и она работает должным образом с отдельными задачами.

Когда задача не выполняется внутри группы он попадает в очередь недоставленных сообщений, однако остальная часть цепочки теряется.

Цепочка:

  1. group (a, b, c, d, e)
  2. задача x
  3. задача y
  4. задача w
  5. задача z

Я хочу, чтобы все эти задачи были в группа должна работать параллельно, go в очередь недоставленных сообщений, если что-то произойдет, и переместить цепочку задач вместе с ней (это может быть после того, как все задачи будут запущены в группе). Есть ли способ сделать это? Если нет, то каков альтернативный способ получения восстанавливаемой цепочки с группой в ней?

1 Ответ

3 голосов
/ 12 августа 2020

Сама цепочка ищет обратный вызов от группы, если группа не сработает, остальные задачи потерпят неудачу и будут «потеряны»

Определение цепочки: примитив цепочки позволяет нам связывать вместе подписи так, чтобы одна вызывалась за другой, по сути, образуя цепочку обратных вызовов.

Если я правильно понимаю, вы можете обработать этот обратный вызов в следующих задачах, определив исключение.

В качестве ссылки на аналогичный вопрос: ( Запускать обратный вызов хорды, даже если основные задачи терпят неудачу )

Источники: https://docs.celeryproject.org/en/stable/userguide/canvas.html#chains

(Я бы прокомментировал, но у меня недостаточно репутации, надеюсь, это поможет!)

...