Releases: celery/celery
v5.6.3
What's Changed
- Fix Django worker recursion bug + defensive checks for pool_cls.module by @maycuatroi1 in #10048
- Docs: Update user_preload_options example to use click. by @jorsyk in #10056
- Fix invalid configuration key "bootstrap_servers" in Kafka demo by @jorsyk in #10060
- Fix broken images on PyPI page by @Timour-Ilyas in #10066
- Remove broken reference. by @sueannioanis in #10071
- Removed --dist=loadscope from smoke tests by @Nusnus in #10073
- Docs: Clarify task_retry signal args may be None by @GangEunzzang in #10076
- Update example for Django by @sbc-khacnha in #10081
- Make tests compatible with pymongo >= 4.16 by @cjwatson in #10074
- fix: source install of cassandra-driver by @Izzette in #10105
- fix: register task cross-reference role in Sphinx extension by @veeceey in #10100
- fix: avoid cycle detection in native delayed delivery by @Izzette in #10095
- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by @mriddle in #10086
- fix dusk_astronomical horizon sign (+18 -> -18) by @Mr-Neutr0n in #10121
- Fix/10106 onupdate col use lambda func by @ChickenBenny in #10108
- Fix warm shutdown RuntimeError with eventlet>=0.37.0 (#10083) by @ChickenBenny in #10123
- Fix 10109 db backend connection health by @ChickenBenny in #10124
- Database Backend filter unsupport sql engine arguments with nullpool #7355 by @ChickenBenny in #10134
- fix(beat): correct argument order in Service.reduce by @bysiber in #10137
- ci: declare explicit read-only token permissions in workflow jobs by @Rohan5commit in #10139
- chore: 'boto3to' to 'boto3 to' by @cuiweixie in #10133
- Database Backend: Add missing index on date_done (Fixes #10097) by @ChickenBenny in #10098
- docs: fix typo in CONTRIBUTING.rst by @Rohan5commit in #10141
- Refer to Flower / Prometheus for monitoring by @WilliamDEdwards in #10140
- docs: remove duplicated words in broker and routing docs by @Rohan5commit in #10146
- docs: fix stale version reference and grammar in README by @kelsonbrito50 in #10145
- docs: fix wording in Celery 5.3 worker pool notes by @Rohan5commit in #10149
- docs: fix duplicated wording in 3.1 changelog entry by @Rohan5commit in #10152
- docs: fix changelog typo in context manager wording by @Rohan5commit in #10144
- Fix/10096 worker fails to reconnect after redis failover by @ChickenBenny in #10151
- Improve on_after_finalize signal documentation by @Br1an67 in #10155
- Add non-commutative example to clarify partial arg ordering in canvas docs by @Br1an67 in #10157
- Remove redundant test_isa_mapping test (fixes #10077) by @daniel7an in #10103
- Upgrade pytest-celery to >=1.3.0 and adopt PYTEST_CELERY_PKG build arg by @Nusnus in #10162
- Remove deprecated args from redis get_connection call by @JaeHyuckSa in #10036
- Fix #6912 rpc backend reconnection error by @ChickenBenny in #10179
- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by @drichardson in #10165
- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by @tsangwailam in #10181
- Fix O(KΒ²) message bloat in a chain of chords by @Borzik in #10171
- Fix mock connection interfaces to prevent
TypeErrorduring exception handling by @ChickenBenny in #10178 - fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by @aurangzaib048 in #10159
- Extract
reconnect_on_errortoBaseResultConsumerby @ChickenBenny in #10189 - pep 649 by @ericbuehl in #10187
- Fix#9722 friendly status errors for CLI by @ChickenBenny in #10190
- docs: clarify after_return behavior for retried tasks by @KianAnbarestani in #10192
- Add compression header to message protocol docs by @Br1an67 in #10156
- docs: fix duplicated word in bootsteps comment by @Rohan5commit in #10153
- Remove outdated autoreloader section from extending docs by @Br1an67 in #10154
- Fix: prioritize request ignore_result over task definition by @patri27826 in #10184
- fix: clear the timer while catch the exception by @ChickenBenny in #10218
- Prepare for release: v5.6.3 by @Nusnus in #10221
New Contributors
- @maycuatroi1 made their first contribution in #10048
- @jorsyk made their first contribution in #10056
- @Timour-Ilyas made their first contribution in #10066
- @sueannioanis made their first contribution in #10071
- @GangEunzzang made their first contribution in #10076
- @sbc-khacnha made their first contribution in #10081
- @veeceey made their first contribution in #10100
- @mriddle made their first contribution in #10086
- @Mr-Neutr0n made their first contribution in #10121
- @ChickenBenny made their first contribution in #10108
- @bysiber made their first contribution in #10137
- @Rohan5commit made their first contribution in #10139
- @cuiweixie made their first contribution in #10133
- @kelsonbrito50 made their first contribution in #10145
- @Br1an67 made their first contribution in #10155
- @daniel7an made their first contribution in #10103
- @drichardson made their first contribution in #10165
- @tsangwailam made their first contribution in #10181
- @Borzik made their first contribution in #10171
- @aurangzaib048 made their first contribution in #10159
- @ericbuehl made their first contribution in #10187
- @KianAnbarestani made their first contribution in #10192
- @patri27826 made their first contribution in #10184
Full Changelog: v5.6.2...v5.6.3
v5.6.2
What's Changed
- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by @bruunotrindade in #10045
- Bugfix: Revoked tasks now immediately update backend status to REVOKED by @Nusnus in #9869
- Prepare for release: v5.6.2 by @Nusnus in #10049
New Contributors
- @bruunotrindade made their first contribution in #10045
Full Changelog: v5.6.1...v5.6.2
v5.6.1
What's Changed
- Fix Redis Sentinel ACL authentication support by @anthonykuzmich7 in #10013
- Fix: Broker heartbeats not sent during graceful shutdown by @weetster in #9986
- docs #5410 -- Document confirm_publish broker transport option by @JaeHyuckSa in #10016
- close DB pools only in prefork mode by @petrprikryl in #10020
- Fix: Avoid unnecessary Django database connection creation during cleanup by @snopoke in #10015
- reliable prefork detection by @petrprikryl in #10023
- better coverage by @petrprikryl in #10029
- Docs: clarify
result_extendedvs periodic task metadata and showheaders["periodic_task_name"]example by @SpaceShaman in #10030 - Stop importing pytest_subtests by @cjwatson in #10032
- Only use exceptiongroup backport for Python < 3.11 by @cjwatson in #10033
- Prepare for release: v5.6.1 by @Nusnus in #10037
New Contributors
- @anthonykuzmich7 made their first contribution in #10013
- @weetster made their first contribution in #9986
- @JaeHyuckSa made their first contribution in #10016
- @snopoke made their first contribution in #10015
- @SpaceShaman made their first contribution in #10030
Full Changelog: v5.6.0...v5.6.1
v5.6.0
Celery v5.6.0 is now available.
Key Highlights
See What's new in Celery 5.6 for a complete overview or read the main highlights below.
Python 3.9 Minimum Version
Celery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.
Additionally, this release includes initial support for Python 3.14.
SQS: Reverted to pycurl from urllib3
The switch from pycurl to urllib3 for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.
Contributed by @auvipy in #9620.
Security Fix: Broker Credential Leak Prevention
Fixed a security issue where broker URLs containing passwords were being logged in plaintext by the delayed delivery mechanism. Broker credentials are now properly sanitized in all log output.
Contributed by @giancarloromeo in #9997.
Memory Leak Fixes
Two significant memory leaks have been fixed in this release:
Exception Handling Memory Leak: Fixed a critical memory leak in task exception handling that was particularly severe on Python 3.11+ due to enhanced traceback data. The fix properly breaks reference cycles in tracebacks to allow garbage collection.
Contributed by @jaiganeshs21 in #9799.
Pending Result Memory Leak: Fixed a memory leak where AsyncResult subscriptions were not being cleaned up when results were forgotten.
Contributed by @tsoos99dev in #9806.
ETA Task Memory Limit
New configuration option worker_eta_task_limit to prevent out-of-memory crashes when workers fetch large numbers of ETA or countdown tasks. Previously, workers could exhaust available memory when the broker contained many scheduled tasks.
Example usage:
app.conf.worker_eta_task_limit = 1000Contributed by @sashu2310 in #9853.
Queue Type Selection for Auto-created Queues
New configuration options allow specifying the queue type and exchange type when Celery auto-creates missing queues. This is particularly useful for RabbitMQ users who want to use quorum queues with auto-created queues.
Configuration options:
task_create_missing_queue_type: Sets the queue type for auto-created queues (e.g.,quorum,classic)task_create_missing_queue_exchange_type: Sets the exchange type for auto-created queues
Example usage:
app.conf.task_create_missing_queue_type = 'quorum'Contributed by @ghirailghiro in #9815.
What's Changed
Full Changelog: v5.6.0rc2...v5.6.0
v5.6.0rc2
Celery v5.6.0 Release Candidate 2 is now available for testing.
Please help us test this version and report any issues.
What's Changed
- Remove Python 4.0 version condition for pytest dependencies by @ulgens in #9993
- Sanitize broker URL in delayed delivery logs (avoid leaking credentials) by @giancarloromeo in #9997
- Don't fail task on timeout during cold shutdown by @Nusnus in #9678
- Add Py39-314t to CI by @Nusnus in #9999
- asynpool: Don't return from inside a finally block by @torarvid in #10000
- Prepare for (pre) release: v5.6.0rc2 by @Nusnus in #10005
New Contributors
- @ulgens made their first contribution in #9993
- @giancarloromeo made their first contribution in #9997
- @torarvid made their first contribution in #10000
Full Changelog: v5.6.0rc1...v5.6.0rc2
v5.6.0rc1
Celery v5.6.0 Release Candidate 1 is now available for testing.
Please help us test this version and report any issues.
What's Changed
- Add support for Django Connection pool by @petrprikryl in #9953
- Pin tblib to ==3.1.0 by @kernelshard in #9967
- fix(worker): continue to attempt to bind other queues after a native delayed delivery binding failure has occurred by @Izzette in #9959
- Handle UnpicklingError in persistent scheduler initialization by @pakallis in #9952
- Bug Fix: Nested Chords Fail When Using django-celery-results with a Redis Backend by @kumuthu53 in #9950
- Add support pymongo 4.12 by @kidoz in #9665
- Make tests compatible with pymongo >= 4.14 by @cjwatson in #9968
- tblib updated from 3.1.0 to 3.2.0 by @MehrazRumman in #9970
- Fix remaining function typing and docstring by @wcislo-saleor in #9971
- Fix regex pattern in version parsing and remove duplicate entry in all by @sagar1343 in #9978
- Bump Kombu to v5.6.0 and removed <5.7 limit on kombu by @Nusnus in #9981
- Prepare for (pre) release: v5.6.0rc1 by @Nusnus in #9982
New Contributors
- @petrprikryl made their first contribution in #9953
- @kernelshard made their first contribution in #9967
- @Izzette made their first contribution in #9959
- @kumuthu53 made their first contribution in #9950
- @wcislo-saleor made their first contribution in #9971
- @sagar1343 made their first contribution in #9978
Full Changelog: v5.6.0b2...v5.6.0rc1
v5.6.0b2
Celery v5.6.0 Beta 2 is now available for testing.
Please help us test this version and report any issues.
What's Changed
- GitHub Actions: Test on Python 3.14 release candidate 2 by @cclauss in #9891
- Update pypy to python 3.11 by @cclauss in #9896
- Feature: Add support credential_provider to Redis Backend by @alaminopu in #9879
- Celery.timezone: try tzlocal.get_localzone() before using LocalTimezone by @woutdenolf in #9862
- Run integration tests on Python 3.14 by @cclauss in #9903
- Fix arithmetic overflow for MSSQL result backend by @vladborovtsov in #9904
- Add documentation for task_id param for apply_async function by @sumo1998 in #9906
- Support redis client name by @mdalp in #9900
- Bump Kombu to v5.6.0rc1 by @Nusnus in #9918
- Fix broker connection retry attempt counter in the error log by @sumo1998 in #9911
- fix: restrict disable-prefetch feature to Redis brokers only by @Dkhodos in #9919
- fix(): preserve group order in replaced signature by @simonepozzoli-pix4d in #9910
- Remove Python 3.8 from CI workflow by @auvipy in #9930
- Update default Python versions in integration tests by @auvipy in #9931
- Update tox.ini to remove Python 3.8 by @auvipy in #9932
- Remove Python 3.8 from Dockerfile by @auvipy in #9933
- Update Python version requirement to 3.9 by @auvipy in #9935
- Update pypy version from 3.10 to 3.11 in Dockerfile by @auvipy in #9934
- Flake8 fixes by @auvipy in #9955
- Remove test-pypy3.txt from Dockerfile dependencies by @auvipy in #9939
- Remove backports.zoneinfo for Python 3.9 compatibility by @auvipy in #9956
- Update pytest-cov version for Python compatibility by @auvipy in #9957
- Update pytest-rerunfailures and pre-commit versions by @auvipy in #9958
- Prepare for (pre) release: v5.6.0b2 by @Nusnus in #9938
New Contributors
- @vladborovtsov made their first contribution in #9904
- @sumo1998 made their first contribution in #9906
- @mdalp made their first contribution in #9900
- @simonepozzoli-pix4d made their first contribution in #9910
Full Changelog: v5.6.0b1...v5.6.0b2
v5.6.0b1
Celery v5.6.0 Beta 1 is now available for testing.
Please help us test this version and report any issues.
What's Changed
- docs: mention of json serializer recursive reference message size blowup (#5000) by @chrisbarber in #9743
- docs: typo in canvas.rst by @chrisbarber in #9744
- Makes _on_retry return a float as required to be used as errback on retry_over_time by @maccinza in #9741
- Update canvas.rst doc calculation order for callback by @auvipy in #9758
- Updated Blacksmith logo by @Nusnus in #9763
- Made the Sponsors logos link to their website by @Nusnus in #9764
- add missing cloudamqp logo by @auvipy in #9767
- Improve sponsor visibility by @auvipy in #9768
- fix: (#9773) task_id must not be empty with chain as body of a chord by @dfm88 in #9774
- Update setup.py to fix deprecation warning by @auvipy in #9771
- Adds integration test for chord_unlock bug when routed to quorum/topic queue by @maccinza in #9766
- Add xfail test for default queue/exchange fallback ignoring task_default_* settings by @maccinza in #9765
- Add xfail test for RabbitMQ quorum queue global QoS race condition by @maccinza in #9770
- fix: (#8786) time out when chord header fails with group body by @dfm88 in #9788
- Fix #9738 : Add root_id and parent_id to .apply() by @dfm88 in #9784
- Replace DelayedDelivery connection creation to use context manger by @bityob in #9793
- Fix #9794: Pydantic integration fails with future.annotations. by @davidt in #9795
- add go and rust implementation in docs by @darixsamani in #9800
- Fix memory leak in exception handling (Issue #8882) by @jaiganeshs21 in #9799
- Fix handlers docs (Issue #9787) by @jaiganeshs21 in #9804
- Remove importlib_metadata leftovers by @cjwatson in #9791
- Update timeout minutes for smoke tests CI by @auvipy in #9807
- Revert "Remove dependency on
pycurl" by @auvipy in #9620 - Add Blacksmith Docker layer caching to all Docker builds by @Nusnus in #9840
- Bump Kombu to v5.6.0b1 by @Nusnus in #9839
- Disable pytest-xdist for smoke tests and increase retries (CI ONLY) by @Nusnus in #9842
- Fix Python 3.13 compatibility in events dumper by @Nusnus in #9826
- Dockerfile Build Optimizations by @Nusnus in #9733
- Migrated from useblacksmith/build-push-action@v1 to useblacksmith/setup-docker-builder@v1 in the CI by @Nusnus in #9846
- Remove incorrect example by @YuppY in #9854
- Revert "Use Django DB max age connection setting" by @danlamanna in #9824
- Fix pending_result memory leak by @tsoos99dev in #9806
- Update python-package.yml by @auvipy in #9856
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #9857
- Bump Kombu to v5.6.0b2 by @Nusnus in #9858
- Refactor integration and smoke tests CI by @Nusnus in #9855
- Fix
AsyncResult.forget()with couchdb backend method raisesTypeError: a bytes-like object is required, not 'str'by @temaxuck in #9865 - Improve Docs for SQS Authentication by @BlaiseMuhirwa in #9868
- Added
.github/copilot-instructions.mdfor GitHub Copilot by @Nusnus in #9874 - misc: credit removal by @0asys in #9877
- Choose queue type and exchange type when creating missing queues (fix #9671) by @ghirailghiro in #9815
- fix: prevent celery from hanging due to spawned greenlet errors in greenlet drainers by @linusphan in #9371
- Feature/disable prefetch fixes by @Dkhodos in #9863
- Add worker_eta_task_limit configuration to manage ETA task memory usage by @sashu2310 in #9853
- Update runner version in Docker workflow by @auvipy in #9884
- Prepare for (pre) release: v5.6.0b1 by @Nusnus in #9890
New Contributors
- @chrisbarber made their first contribution in #9743
- @dfm88 made their first contribution in #9774
- @davidt made their first contribution in #9795
- @darixsamani made their first contribution in #9800
- @YuppY made their first contribution in #9854
- @danlamanna made their first contribution in #9824
- @tsoos99dev made their first contribution in #9806
- @temaxuck made their first contribution in #9865
- @BlaiseMuhirwa made their first contribution in #9868
- @ghirailghiro made their first contribution in #9815
- @linusphan made their first contribution in #9371
- @Dkhodos made their first contribution in #9863
- @sashu2310 made their first contribution in #9853
Full Changelog: v5.5.3...v5.6.0b1
v5.5.3
What's Changed
- make the tests run on python 3.13 for gcs backend by @auvipy in #9677
- Added DeepWiki to README by @Nusnus in #9683
- Limit redis to <=v5.2.1 to match Kombu by @Nusnus in #9693
- Use EX_OK instead of literal zero by @Nusnus in #9684
- Make wheel metadata reproducible by @cjwatson in #9687
- let celery install from kombu dependencies for better align by @auvipy in #9696
- Fix stamping documentation to clarify stamped_headers key is optional in visitor methods by @Nusnus in #9697
- Support apply_async without queue argument on quorum queues by @bityob in #9686
- Updated rabbitmq doc about using quorum queues with task routes by @bityob in #9707
- Add: Dumper Unit Test by @yiyu0x in #9711
- Add unit test for event.group_from by @rogerforlife in #9709
- refactor: add beat_cron_starting_deadline documentation warning by @alirafiei75 in #9712
- fix: resolve issue #9569 by supporting distinct broker transport options for workers by @yiyu0x in #9695
- Fixes issue with retry callback arguments in DelayedDelivery by @maccinza in #9708
- get_exchange-unit-test by @rogerforlife in #9710
- ISSUE-9704: Update documentation of result_expires, filesystem backend is supported by @MattiasDC in #9716
- update to blacksmith ubuntu 24.04 by @auvipy in #9717
- Added unit tests for celery.utils.iso8601 by @jaiganeshs21 in #9725
- Update introduction.rst docs by @auvipy in #9728
- Prepare for release: v5.5.3 by @Nusnus in #9732
New Contributors
- @bityob made their first contribution in #9686
- @yiyu0x made their first contribution in #9711
- @rogerforlife made their first contribution in #9709
- @alirafiei75 made their first contribution in #9712
- @maccinza made their first contribution in #9708
- @MattiasDC made their first contribution in #9716
- @jaiganeshs21 made their first contribution in #9725
Full Changelog: v5.5.2...v5.5.3
v5.5.2
What's Changed
- Fix calculating remaining time across DST changes by @imrivera in #9669
- Remove
setup_loggerfrom COMPAT_MODULES by @rconradharris in #9668 - Fix mongodb bullet and fix github links in contributions section by @jabberwock404 in #9672
- Prepare for release: v5.5.2 by @Nusnus in #9675
New Contributors
- @imrivera made their first contribution in #9669
- @rconradharris made their first contribution in #9668
- @jabberwock404 made their first contribution in #9672
Full Changelog: v5.5.1...v5.5.2