The Fix
pip install celery==5.5.3
Based on closed celery/celery issue #9724 · PR/commit linked
Production note: This usually shows up under retries/timeouts. Treat it as a side-effect risk until you can verify behavior with a canary + real traffic.
@@ -1 +1 @@
@@ -1 +1 @@
-pymongo==4.10.1
+kombu[mongodb]
diff --git a/requirements/extras/msgpack.txt b/requirements/extras/msgpack.txt
$pip install -e .
pip install -e .
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://krisviqi-all:****@gitlab.com/api/v4/projects/20784987/packages/pypi/simple, https://krisviqi-all:****@gitlab.com/api/v4/projects/20715466/packages/pypi/simple, https://krisviqi-all:****@gitlab.com/api/v4/projects/30340519/packages/pypi/simple
Obtaining file:///home/kgk/pyproj
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Preparing editable metadata (pyproject.toml) ... done
Collecting celery[redis] (from dependencies==1)
Downloading celery-5.5.2-py3-none-any.whl.metadata (22 kB)
Collecting billiard<5.0,>=4.2.1 (from celery[redis]->dependencies==1)
Downloading billiard-4.2.1-py3-none-any.whl.metadata (4.4 kB)
Collecting kombu<5.6,>=5.5.2 (from celery[redis]->dependencies==1)
Downloading kombu-5.5.3-py3-none-any.whl.metadata (3.5 kB)
Collecting vine<6.0,>=5.1.0 (from celery[redis]->dependencies==1)
Downloading vine-5.1.0-py3-none-any.whl.metadata (2.7 kB)
Collecting click<9.0,>=8.1.2 (from celery[redis]->dependencies==1)
Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)
Collecting click-didyoumean>=0.3.0 (from celery[redis]->dependencies==1)
Downloading click_didyoumean-0.3.1-py3-none-any.whl.metadata (3.9 kB)
Collecting click-repl>=0.2.0 (from celery[redis]->dependencies==1)
Downloading click_repl-0.3.0-py3-none-any.whl.metadata (3.6 kB)
Collecting click-plugins>=1.1.1 (from celery[redis]->dependencies==1)
Downloading click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)
Collecting python-dateutil>=2.8.2 (from celery[redis]->dependencies==1)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting redis!=4.5.5,<6.0.0,>=4.5.2 (from celery[redis]->dependencies==1)
Downloading redis-5.3.0-py3-none-any.whl.metadata (9.2 kB)
Collecting prompt-toolkit>=3.0.36 (from click-repl>=0.2.0->celery[redis]->dependencies==1)
Downloading prompt_toolkit-3.0.51-py3-none-any.whl.metadata (6.4 kB)
Collecting amqp<6.0.0,>=5.1.1 (from kombu<5.6,>=5.5.2->celery[redis]->dependencies==1)
Downloading amqp-5.3.1-py3-none-any.whl.metadata (8.9 kB)
Collecting tzdata>=2025.2 (from kombu<5.6,>=5.5.2->celery[redis]->dependencies==1)
Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->celery[redis]->dependencies==1)
Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting PyJWT~=2.9.0 (from redis!=4.5.5,<6.0.0,>=4.5.2->celery[redis]->dependencies==1)
Downloading PyJWT-2.9.0-py3-none-any.whl.metadata (3.0 kB)
Collecting async-timeout>=4.0.3 (from redis!=4.5.5,<6.0.0,>=4.5.2->celery[redis]->dependencies==1)
Downloading async_timeout-5.0.1-py3-none-any.whl.metadata (5.1 kB)
Collecting wcwidth (from prompt-toolkit>=3.0.36->click-repl>=0.2.0->celery[redis]->dependencies==1)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Downloading billiard-4.2.1-py3-none-any.whl (86 kB)
Downloading click-8.2.1-py3-none-any.whl (102 kB)
Downloading click_didyoumean-0.3.1-py3-none-any.whl (3.6 kB)
Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Downloading click_repl-0.3.0-py3-none-any.whl (10 kB)
Downloading kombu-5.5.3-py3-none-any.whl (209 kB)
Downloading vine-5.1.0-py3-none-any.whl (9.6 kB)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading redis-5.3.0-py3-none-any.whl (272 kB)
Downloading celery-5.5.2-py3-none-any.whl (438 kB)
Downloading amqp-5.3
... (truncated) ...
Re-run the minimal reproduction on your broken version, then apply the fix and re-run.
Option A — Upgrade to fixed release\npip install celery==5.5.3\nWhen NOT to use: Do not use this fix if the application relies on specific Redis versions.\n\n
Why This Fix Works in Production
- Trigger: - [X ] I have included all related issues and possible duplicate issues
- Mechanism: The installation of Celery was incorrectly pulling Redis dependencies instead of Kombu dependencies
- Why the fix works: Allows Celery to install from Kombu dependencies for better alignment, addressing the issue with incorrect Redis installation. (first fixed release: 5.5.3).
- If left unfixed, the same config can fail only in production (env differences), causing startup failures or partial feature outages.
Why This Breaks in Prod
- Shows up under Python 3.11 in real deployments (not just unit tests).
- The installation of Celery was incorrectly pulling Redis dependencies instead of Kombu dependencies
- Production symptom (often without a traceback): - [X ] I have included all related issues and possible duplicate issues
Proof / Evidence
- GitHub issue: #9724
- Fix PR: https://github.com/celery/celery/pull/9696
- First fixed release: 5.5.3
- Reproduced locally: No (not executed)
- Last verified: 2026-02-09
- Confidence: 0.95
- Did this fix it?: Yes (upstream fix exists)
- Own content ratio: 0.44
Discussion
High-signal excerpts from the issue thread (symptoms, repros, edge-cases).
“I think it is the same as https://github.com/celery/celery/issues/9680 which got solved by https://github.com/celery/celery/pull/9696 and should be in 5.5.3”
“I think we need a new release to fix this. but not sure if it is fixed already or not?”
Failure Signature (Search String)
- - [X ] I have included all related issues and possible duplicate issues
- or possible duplicates to this issue as requested by the checklist above.
Copy-friendly signature
Failure Signature
-----------------
- [X ] I have included all related issues and possible duplicate issues
or possible duplicates to this issue as requested by the checklist above.
Error Message
Signature-only (no traceback captured)
Error Message
-------------
- [X ] I have included all related issues and possible duplicate issues
or possible duplicates to this issue as requested by the checklist above.
Minimal Reproduction
$pip install -e .
pip install -e .
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com, https://krisviqi-all:****@gitlab.com/api/v4/projects/20784987/packages/pypi/simple, https://krisviqi-all:****@gitlab.com/api/v4/projects/20715466/packages/pypi/simple, https://krisviqi-all:****@gitlab.com/api/v4/projects/30340519/packages/pypi/simple
Obtaining file:///home/kgk/pyproj
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Preparing editable metadata (pyproject.toml) ... done
Collecting celery[redis] (from dependencies==1)
Downloading celery-5.5.2-py3-none-any.whl.metadata (22 kB)
Collecting billiard<5.0,>=4.2.1 (from celery[redis]->dependencies==1)
Downloading billiard-4.2.1-py3-none-any.whl.metadata (4.4 kB)
Collecting kombu<5.6,>=5.5.2 (from celery[redis]->dependencies==1)
Downloading kombu-5.5.3-py3-none-any.whl.metadata (3.5 kB)
Collecting vine<6.0,>=5.1.0 (from celery[redis]->dependencies==1)
Downloading vine-5.1.0-py3-none-any.whl.metadata (2.7 kB)
Collecting click<9.0,>=8.1.2 (from celery[redis]->dependencies==1)
Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)
Collecting click-didyoumean>=0.3.0 (from celery[redis]->dependencies==1)
Downloading click_didyoumean-0.3.1-py3-none-any.whl.metadata (3.9 kB)
Collecting click-repl>=0.2.0 (from celery[redis]->dependencies==1)
Downloading click_repl-0.3.0-py3-none-any.whl.metadata (3.6 kB)
Collecting click-plugins>=1.1.1 (from celery[redis]->dependencies==1)
Downloading click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)
Collecting python-dateutil>=2.8.2 (from celery[redis]->dependencies==1)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting redis!=4.5.5,<6.0.0,>=4.5.2 (from celery[redis]->dependencies==1)
Downloading redis-5.3.0-py3-none-any.whl.metadata (9.2 kB)
Collecting prompt-toolkit>=3.0.36 (from click-repl>=0.2.0->celery[redis]->dependencies==1)
Downloading prompt_toolkit-3.0.51-py3-none-any.whl.metadata (6.4 kB)
Collecting amqp<6.0.0,>=5.1.1 (from kombu<5.6,>=5.5.2->celery[redis]->dependencies==1)
Downloading amqp-5.3.1-py3-none-any.whl.metadata (8.9 kB)
Collecting tzdata>=2025.2 (from kombu<5.6,>=5.5.2->celery[redis]->dependencies==1)
Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->celery[redis]->dependencies==1)
Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting PyJWT~=2.9.0 (from redis!=4.5.5,<6.0.0,>=4.5.2->celery[redis]->dependencies==1)
Downloading PyJWT-2.9.0-py3-none-any.whl.metadata (3.0 kB)
Collecting async-timeout>=4.0.3 (from redis!=4.5.5,<6.0.0,>=4.5.2->celery[redis]->dependencies==1)
Downloading async_timeout-5.0.1-py3-none-any.whl.metadata (5.1 kB)
Collecting wcwidth (from prompt-toolkit>=3.0.36->click-repl>=0.2.0->celery[redis]->dependencies==1)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Downloading billiard-4.2.1-py3-none-any.whl (86 kB)
Downloading click-8.2.1-py3-none-any.whl (102 kB)
Downloading click_didyoumean-0.3.1-py3-none-any.whl (3.6 kB)
Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Downloading click_repl-0.3.0-py3-none-any.whl (10 kB)
Downloading kombu-5.5.3-py3-none-any.whl (209 kB)
Downloading vine-5.1.0-py3-none-any.whl (9.6 kB)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading redis-5.3.0-py3-none-any.whl (272 kB)
Downloading celery-5.5.2-py3-none-any.whl (438 kB)
Downloading amqp-5.3
... (truncated) ...
Environment
- Python: 3.11
What Broke
Users experienced incorrect Redis installations when installing Celery as a dependency.
Why It Broke
The installation of Celery was incorrectly pulling Redis dependencies instead of Kombu dependencies
Fix Options (Details)
Option A — Upgrade to fixed release Safe default (recommended)
pip install celery==5.5.3
Use when you can deploy the upstream fix. It is usually lower-risk than long-lived workarounds.
Option D — Guard side-effects with OnceOnly Guardrail for side-effects
Mitigate duplicate external side-effects under retries/timeouts/agent loops by gating the operation before calling external systems.
- Place OnceOnly between your code/agent and real side-effects (Stripe, emails, CRM, APIs).
- Use a stable key per side-effect (e.g., customer_id + action + idempotency_key).
- Fail-safe: configure fail-open vs fail-closed based on blast radius and spend risk.
Show example snippet (optional)
from onceonly import OnceOnly
import os
once = OnceOnly(api_key=os.environ["ONCEONLY_API_KEY"], fail_open=True)
# Stable idempotency key per real side-effect.
# Use a request id / job id / webhook delivery id / Stripe event id, etc.
event_id = "evt_..." # replace
key = f"stripe:webhook:{event_id}"
res = once.check_lock(key=key, ttl=3600)
if res.duplicate:
return {"status": "already_processed"}
# Safe to execute the side-effect exactly once.
handle_event(event_id)
Fix reference: https://github.com/celery/celery/pull/9696
First fixed release: 5.5.3
Last verified: 2026-02-09. Validate in your environment.
When NOT to Use This Fix
- Do not use this fix if the application relies on specific Redis versions.
- Do not use this to hide logic bugs or data corruption. Use it to block duplicate external side-effects and enforce tool permissions/spend caps.
Verify Fix
Re-run the minimal reproduction on your broken version, then apply the fix and re-run.
Did This Fix Work in Your Case?
Quick signal helps us prioritize which fixes to verify and improve.
Prevention
- Capture the exact failing error string in logs and tests so you can reproduce via a minimal script.
- Pin production dependencies and upgrade only with a reproducible test that hits the failing path.
Version Compatibility Table
| Version | Status |
|---|---|
| 5.5.3 | Fixed |
Related Issues
No related fixes found.
Sources
We don’t republish the full GitHub discussion text. Use the links above for context.