acks_late в Celery откладывает подтверждение до выполнения задачи. Если эффект уже произошёл, а подтверждение потерялось, брокер может доставить задачу повторно.
Что такое Late Ack (подтверждение после выполнения) в Celery и в каких сценариях эта стратегия может привести к двойной обработке задачи?
acks_late в Celery откладывает подтверждение до выполнения задачи. Если эффект уже произошёл, а подтверждение потерялось, брокер может доставить задачу повторно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
acks_late в Celery откладывает подтверждение до выполнения задачи. Если эффект уже произошёл, а подтверждение потерялось, брокер может доставить задачу повторно.
Поэтому запись результата и дедупликацию связывают атомарно, а внешним операциям передают idempotency key. Late ack не означает повтор при любом падении дочернего процесса: для worker lost есть отдельное поведение и настройка task_reject_on_worker_lost. Её включение может зациклить постоянно падающую задачу. Учитывайте также транспортные таймауты, длительность задач и ограниченные retry. Подтверждение брокеру не является транзакцией с произвольной внешней системой.
Источник: docs.celeryq.dev.