The Fix
pip install celery==4.4.0rc5
Based on closed celery/celery issue #5567 · 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.
@@ -1052,6 +1052,10 @@ Default: No limit.
pool used for sending and retrieving results.
+.. warning::
+ Redis will raise a `ConnectionError` if the number of concurrent
+ connections exceeds the maximum.
Option A — Upgrade to fixed release\npip install celery==4.4.0rc5\nWhen NOT to use: This fix is not applicable if the documentation does not require clarification on connection limits.\n\n
Why This Fix Works in Production
- Trigger: - [x] I have included all related issues and possible duplicate issues in this issue
- Mechanism: The documentation did not clarify the behavior of Redis connection limits
- Why the fix works: Adds a warning to the documentation regarding the `max_redis_connections` setting, indicating that exceeding the maximum number of concurrent connections will raise a `ConnectionError`. (first fixed release: 4.4.0rc5).
- 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 documentation did not clarify the behavior of Redis connection limits
- Production symptom (often without a traceback): - [x] I have included all related issues and possible duplicate issues in this issue
Proof / Evidence
- GitHub issue: #5567
- Fix PR: https://github.com/celery/celery/pull/5618
- First fixed release: 4.4.0rc5
- 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.72
Discussion
High-signal excerpts from the issue thread (symptoms, repros, edge-cases).
“can you create a pr for docs improvement?”
“@okomarov I'm using celery with redis as broker & backend”
“@auvipy I will add some clarifications to the redis_max_connections setting which will partially solve the issue above”
Failure Signature (Search String)
- - [x] I have included all related issues and possible duplicate issues in this issue
- In contrast, the [`redis.connection.BlockingConnectionPool`](https://redis-py.readthedocs.io/en/latest/#redis.BlockingConnectionPool) does not raise an error and waits until a
Copy-friendly signature
Failure Signature
-----------------
- [x] I have included all related issues and possible duplicate issues in this issue
In contrast, the [`redis.connection.BlockingConnectionPool`](https://redis-py.readthedocs.io/en/latest/#redis.BlockingConnectionPool) does not raise an error and waits until a connection becomes available in the pool.
Error Message
Signature-only (no traceback captured)
Error Message
-------------
- [x] I have included all related issues and possible duplicate issues in this issue
In contrast, the [`redis.connection.BlockingConnectionPool`](https://redis-py.readthedocs.io/en/latest/#redis.BlockingConnectionPool) does not raise an error and waits until a connection becomes available in the pool.
What Broke
Users may experience connection errors when exceeding Redis connection limits.
Why It Broke
The documentation did not clarify the behavior of Redis connection limits
Fix Options (Details)
Option A — Upgrade to fixed release Safe default (recommended)
pip install celery==4.4.0rc5
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/5618
First fixed release: 4.4.0rc5
Last verified: 2026-02-09. Validate in your environment.
When NOT to Use This Fix
- This fix is not applicable if the documentation does not require clarification on connection limits.
Did This Fix Work in Your Case?
Quick signal helps us prioritize which fixes to verify and improve.
Prevention
- Add a stress test that runs high-concurrency workloads and fails on thread dumps / blocked locks.
- Enable watchdog dumps in prod (faulthandler, thread dump endpoint) to capture deadlocks quickly.
- Track RSS + object counts after deployments; alert on monotonic growth and GC pressure.
- Add a long-running test that repeats the failing call path and asserts stable memory.
Version Compatibility Table
| Version | Status |
|---|---|
| 4.4.0rc5 | Fixed |
Related Issues
No related fixes found.
Sources
We don’t republish the full GitHub discussion text. Use the links above for context.