# What changed in celery

> 30 changes in celery 5 from its official release notes, upgrade guides and advisories: 1 breaking, 1 security, 3 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/celery/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## celery 5

### Breaking changes

- Python 3.8 support is dropped; Python 3.9 is now required to use Celery 5.6.0. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)

### Security

- Broker URLs containing passwords are now sanitized in all log output, preventing credentials from being logged in plaintext by delayed delivery. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)

### New APIs and options

- Sets the exchange type for auto-created missing queues. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
- Sets the queue type for auto-created missing queues, such as quorum or classic. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
- 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. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)

### Performance

- Reduces O(K²) message bloat in a chain of chords. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Adds a missing database index on date_done. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)

### Fixes and other changes

- Avoids an AttributeError when a process lacks _sentinel_poll. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Provides friendlier status errors in the CLI. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes database backend connection health. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes a worker recursion bug and adds defensive checks for pool_cls.__module__. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- A request's ignore_result setting now takes precedence over the task definition. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Avoids cycle detection in native delayed delivery. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- The database backend filters unsupported SQL engine arguments when using NullPool. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes NameError with TYPE_CHECKING annotations on Python 3.14 and later. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Dispatches chains and callbacks on the deduplication fast path for redelivered tasks. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes workers failing to reconnect after Redis failover. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes a reconnection error in the RPC backend. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Clears the timer while catching an exception. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes a RuntimeError during warm shutdown with eventlet 0.37.0 and later. (5.6.3) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.3)
- Fixes recursive WorkController instantiation and an AttributeError when pool_cls is a string. (5.6.2) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.2)
- Revoked tasks now immediately update backend status to REVOKED. (5.6.2) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.2)
- Broker heartbeats are sent during graceful shutdown. (5.6.1) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.1)
- Database pools are closed only in prefork mode. (5.6.1) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.1)
- Avoids unnecessary Django database connection creation during cleanup. (5.6.1) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.1)
- Fixes ACL authentication when using Redis Sentinel as the broker. (5.6.1) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.1)
- Subscriptions are cleaned up when results are forgotten, fixing a memory leak. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
- Celery 5.6.0 adds initial support for Python 3.14. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
- The SQS transport switches back from urllib3 to pycurl due to critical issues affecting SQS users. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
- 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+. (5.6.0) — [release notes](https://github.com/celery/celery/releases/tag/v5.6.0)
