CeleryRedisApache Airflow

Celery worker enters catatonic state after Redis broker restart

critical
Connection ManagementUpdated Mar 14, 2026(via Exa)
How to detect:

After Redis broker restart (e.g., VM reboot), Celery worker reconnects at transport level but silently loses consumer registration on task queue. Worker process stays alive, celery inspect ping returns OK, but inspect.active_queues() returns None. Worker accepts no new tasks while appearing healthy. Known to affect Celery 5.2.x through 5.5.x with Redis broker.

Recommended action:

Implement enhanced health check that verifies worker has active queue consumers, not just ping response. Check if app.control.inspect().active_queues() returns None or excludes worker_name, and fail health check to trigger container restart. Workarounds: use --without-heartbeat --without-gossip --without-mingle flags (loses cluster features), set broker_connection_retry = False to crash worker on broker loss (requires restart policy), or implement custom health check script checking active_queues() instead of ping.