pypi / celery
celery
What changed in celery 5, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-21.
1 breaking1 security3 new APIs and options2 performance23 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initcelery 530 changes
Breaking changes 1
Python 3.8 support is dropped; Python 3.9 is now required to use Celery 5.6.0.
Security 1
Broker URLs containing passwords are now sanitized in all log output, preventing credentials from being logged in plaintext by delayed delivery.
New APIs and options 3
Sets the exchange type for auto-created missing queues.
Sets the queue type for auto-created missing queues, such as quorum or classic.
Adds a configuration option to limit ETA or countdown tasks fetched by workers, helping prevent out-of-memory crashes when brokers contain many scheduled tasks.
Performance 2
Reduces O(K²) message bloat in a chain of chords.
Adds a missing database index on date_done.
Fixes and other changes 23
Avoids an AttributeError when a process lacks _sentinel_poll.
Provides friendlier status errors in the CLI.
Fixes database backend connection health.
Fixes a worker recursion bug and adds defensive checks for pool_cls.__module__.
A request's ignore_result setting now takes precedence over the task definition.
Avoids cycle detection in native delayed delivery.
The database backend filters unsupported SQL engine arguments when using NullPool.
Fixes NameError with TYPE_CHECKING annotations on Python 3.14 and later.
Dispatches chains and callbacks on the deduplication fast path for redelivered tasks.
Fixes workers failing to reconnect after Redis failover.
Fixes a reconnection error in the RPC backend.
Clears the timer while catching an exception.
Fixes a RuntimeError during warm shutdown with eventlet 0.37.0 and later.
Fixes recursive WorkController instantiation and an AttributeError when pool_cls is a string.
Revoked tasks now immediately update backend status to REVOKED.
Broker heartbeats are sent during graceful shutdown.
Database pools are closed only in prefork mode.
Avoids unnecessary Django database connection creation during cleanup.
Fixes ACL authentication when using Redis Sentinel as the broker.
Subscriptions are cleaned up when results are forgotten, fixing a memory leak.
Celery 5.6.0 adds initial support for Python 3.14.
The SQS transport switches back from urllib3 to pycurl due to critical issues affecting SQS users.
Traceback reference cycles are broken during task exception handling so they can be garbage-collected, fixing a memory leak particularly severe on Python 3.11+.