Canvas описывает композицию задач: chain выполняет шаги последовательно, group запускает набор, chord добавляет callback после группы. Завершение координируют Celery и result backend, а не брокер сам по себе.
Как в Celery устроен паттерн Canvas (Chords и Chains) и как брокер координирует завершение параллельных задач?
Canvas описывает композицию задач: chain выполняет шаги последовательно, group запускает набор, chord добавляет callback после группы. Завершение координируют Celery и result backend, а не брокер сам по себе.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Canvas описывает композицию задач: chain выполняет шаги последовательно, group запускает набор, chord добавляет callback после группы. Завершение координируют Celery и result backend, а не брокер сам по себе.
Chain обычно передаёт результат предыдущего шага следующему; immutable signature позволяет не принимать его автоматически. Chord требует поддерживаемого backend и сохранения результатов нужных задач. Способ синхронизации зависит от backend: polling или специальные счётчики. Нужно продумать сбои, повторное выполнение и обработку ошибок callback. Блокирующий get результата внутри worker может привести к исчерпанию пула и не заменяет Canvas.
Источник: docs.celeryq.dev.