The Fix
The documentation for the task_retry signal has been clarified to indicate that only the request argument is guaranteed to be provided, while the reason and einfo arguments may be None or not provided in certain scenarios.
Based on closed celery/celery issue #9851 · 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.
@@ -239,6 +239,12 @@ Provides arguments:
(a :class:`billiard.einfo.ExceptionInfo` object).
+.. note::
+
+ Only the ``request`` argument is guaranteed to be provided in all cases.
Option A — Apply the official fix\nThe documentation for the task_retry signal has been clarified to indicate that only the request argument is guaranteed to be provided, while the reason and einfo arguments may be None or not provided in certain scenarios.\nWhen NOT to use: This fix is not applicable if the documentation is not the source of the issue.\n\n
Why This Fix Works in Production
- Trigger: task_retry documentation doesn't mention possible null and ignored args
- Mechanism: The task_retry documentation misled users about the availability of certain arguments
- 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
- The task_retry documentation misled users about the availability of certain arguments
- Production symptom (often without a traceback): task_retry documentation doesn't mention possible null and ignored args
Proof / Evidence
- GitHub issue: #9851
- Fix PR: https://github.com/celery/celery/pull/10076
- Reproduced locally: No (not executed)
- Last verified: 2026-02-08
- Confidence: 0.60
- Did this fix it?: Yes (upstream fix exists)
- Own content ratio: 0.80
Discussion
High-signal excerpts from the issue thread (symptoms, repros, edge-cases).
“would you mind working on a pull request to improve this?”
Failure Signature (Search String)
- task_retry documentation doesn't mention possible null and ignored args
- - [x] I have included all related issues and possible duplicate issues in this issue
Copy-friendly signature
Failure Signature
-----------------
task_retry documentation doesn't mention possible null and ignored args
- [x] I have included all related issues and possible duplicate issues in this issue
Error Message
Signature-only (no traceback captured)
Error Message
-------------
task_retry documentation doesn't mention possible null and ignored args
- [x] I have included all related issues and possible duplicate issues in this issue
What Broke
Custom signal handling broke due to missing expected arguments in task retries.
Why It Broke
The task_retry documentation misled users about the availability of certain arguments
Fix Options (Details)
Option A — Apply the official fix
The documentation for the task_retry signal has been clarified to indicate that only the request argument is guaranteed to be provided, while the reason and einfo arguments may be None or not provided in certain scenarios.
Fix reference: https://github.com/celery/celery/pull/10076
Last verified: 2026-02-08. Validate in your environment.
When NOT to Use This Fix
- This fix is not applicable if the documentation is not the source of the issue.
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.
Related Issues
No related fixes found.
Sources
We don’t republish the full GitHub discussion text. Use the links above for context.