Why This Happens
urllib3 retries failed connections up to a limit. When all retries are exhausted, it raises MaxRetryError. The underlying cause is usually a ConnectionError, TimeoutError, or SSLError.
The Problem
import requests
response = requests.get('https://nonexistent-api.example.com')The Fix
import requests
from requests.adapters import HTTPAdapter, Retry
session = requests.Session()
retries = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503])
session.mount('https://', HTTPAdapter(max_retries=retries))
try:
response = session.get('https://api.example.com', timeout=10)
except requests.exceptions.ConnectionError as e:
print(f'Failed: {e}')Step-by-Step Fix
- 1
Check the root cause
Look at 'Caused by' in the error.
- 2
Configure retry strategy
Use Retry with exponential backoff.
- 3
Verify the URL
Check URL, DNS, and server availability.
Got the actual stack trace?
Paste it into our free AI explainer to get the cause and the fix for your specific case — no signup, nothing to install.
Explain my errorBugsly catches this automatically
Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.
Try Bugsly free