Celery

Celery tasks acknowledge failures by default causing silent data loss

critical
configurationUpdated Dec 3, 2025(via Exa)
Technologies:
How to detect:

When task_acks_on_failure_or_timeout is True (the default), Celery acknowledges failed tasks to the broker immediately, preventing retries. Tasks lost in transit, result backend failures, worker crashes during execution, hard time limit exceeds, and OOM-killed workers all disappear without trace or notification.

Recommended action:

Set task_acks_late=True and task_reject_on_worker_lost=True in Celery configuration. This ensures tasks are only acknowledged after successful completion and are requeued if the worker dies. Review task_acks_on_failure_or_timeout setting and disable it for critical tasks.