The Fix
pip install celery==5.1.0b2
Based on closed celery/celery issue #6748 · 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.
@@ -180,7 +180,7 @@ def __str__(self):
def __reduce__(self):
- return self.__class__, (self.message, self.excs, self.when)
+ return self.__class__, (self.message, self.exc, self.when)
this bug.
Follow the reproduction steps, confirm the failure, apply the fix, and repeat the same steps to verify the behavior changes.
Option A — Upgrade to fixed release\npip install celery==5.1.0b2\nWhen NOT to use: This fix should not be applied if the Retry instance is expected to have multiple exceptions.\n\n
Why This Fix Works in Production
- Trigger: Pickling Retry instance is incorrect
- Mechanism: The __reduce__ method of the Retry class incorrectly referenced an invalid attribute
- Why the fix works: Fixes invalid pickle protocol support for `celery.exceptions.Retry`, addressing the issue of pickling a Retry instance. (first fixed release: 5.1.0b2).
- If left unfixed, retries/timeouts can trigger duplicate external side-effects (double charges, duplicate emails, repeated writes).
Why This Breaks in Prod
- The __reduce__ method of the Retry class incorrectly referenced an invalid attribute
- Production symptom (often without a traceback): Pickling Retry instance is incorrect
Proof / Evidence
- GitHub issue: #6748
- Fix PR: https://github.com/celery/celery/pull/6749
- First fixed release: 5.1.0b2
- Reproduced locally: No (not executed)
- Last verified: 2026-02-09
- Confidence: 0.85
- Did this fix it?: Yes (upstream fix exists)
- Own content ratio: 0.77
Discussion
High-signal excerpts from the issue thread (symptoms, repros, edge-cases).
“Hey @tumb1er :wave:, Thank you for opening an issue”
“On PyPy the proposed fix is broken (MaximumRecursion): https://github.com/celery/celery/pull/6749/checks?check_run_id=2464687861 Looks like help is needed.”
Failure Signature (Search String)
- Pickling Retry instance is incorrect
- - [x] I have included all related issues and possible duplicate issues
Copy-friendly signature
Failure Signature
-----------------
Pickling Retry instance is incorrect
- [x] I have included all related issues and possible duplicate issues
Error Message
Signature-only (no traceback captured)
Error Message
-------------
Pickling Retry instance is incorrect
- [x] I have included all related issues and possible duplicate issues
Minimal Reproduction
- this bug.
What Broke
Attempting to pickle a Retry instance resulted in a maximum recursion error.
Why It Broke
The __reduce__ method of the Retry class incorrectly referenced an invalid attribute
Fix Options (Details)
Option A — Upgrade to fixed release Safe default (recommended)
pip install celery==5.1.0b2
Use when you can deploy the upstream fix. It is usually lower-risk than long-lived workarounds.
Fix reference: https://github.com/celery/celery/pull/6749
First fixed release: 5.1.0b2
Last verified: 2026-02-09. Validate in your environment.
When NOT to Use This Fix
- This fix should not be applied if the Retry instance is expected to have multiple exceptions.
Verify Fix
Follow the reproduction steps, confirm the failure, apply the fix, and repeat the same steps to verify the behavior changes.
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.1.0b2 | Fixed |
Related Issues
No related fixes found.
Sources
We don’t republish the full GitHub discussion text. Use the links above for context.