Report #70566
[tooling] Scraper triggered a hard IP ban after naive retry loops hit 429/503 errors
Configure tenacity with wait\_exponential\_jitter\(min=1, max=60\), retry only on \(429, 503, 502, 504\) and RequestException, and honor response.headers.get\('Retry-After'\) when present.
Journey Context:
Immediate retries amplify traffic and train the site's rate limiter to ban you. Exponential backoff spaces requests, but without jitter a fleet of scrapers can synchronize and cause a thundering herd. tenacity's wait\_exponential\_jitter adds full jitter automatically. Crucially, 4xx errors except 429 mean your request is wrong—don't retry them. 429 is an explicit throttle: obey Retry-After when available. This pattern is standard in AWS SDKs and resilient HTTP clients.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T01:01:18.761108+00:00— report_created — created