v5.6.0
Breaking Changes📦 celeryView on GitHub →
⚠ 2 breaking✨ 3 features🐛 4 fixes🔧 5 symbols
Summary
Celery 5.6.0 drops Python 3.8 support, reverts SQS to pycurl, adds ETA task limits and queue‑type configuration, and includes several security and memory‑leak fixes.
⚠️ Breaking Changes
- Dropped support for Python 3.8; minimum required Python version is now 3.9. Upgrade Python before upgrading Celery.
- SQS transport reverted from urllib3 back to pycurl, which may break setups that relied on the urllib3 implementation. Adjust any custom SQS transport configuration accordingly.
Migration Steps
- If you upgraded to Celery 5.5.0 and switched SQS transport to `urllib3`, revert any custom settings to use `pycurl` or remove the `urllib3` specific options.
- Review logging configuration to ensure no broker credentials are exposed; no code changes required as the library now sanitizes them.
- Optionally configure `worker_eta_task_limit` and queue‑type settings to take advantage of new features.
✨ New Features
- Added `worker_eta_task_limit` configuration to limit the number of ETA/countdown tasks a worker fetches, preventing out‑of‑memory crashes.
- Added `task_create_missing_queue_type` and `task_create_missing_queue_exchange_type` configurations to control queue and exchange types for auto‑created queues.
- Initial support for Python 3.14.
🐛 Bug Fixes
- Fixed security issue where broker URLs with passwords were logged in plaintext; credentials are now sanitized in all log output.
- Fixed memory leak in task exception handling on Python 3.11+ by breaking reference cycles in tracebacks.
- Fixed memory leak where `AsyncResult` subscriptions were not cleaned up when results were forgotten.
- Reverted SQS transport to use `pycurl` instead of `urllib3` to resolve critical issues for SQS users.
🔧 Affected Symbols
worker_eta_task_limittask_create_missing_queue_typetask_create_missing_queue_exchange_typeAsyncResultSQS transport (pycurl/urllib3 switch)