Report #387
[tooling] Scraper triggers 429 retry storms and wastes proxy budget
Implement capped exponential backoff with full jitter: sleep = random.uniform\(0, min\(base \* 2\*\*attempt, max\_delay\)\). On 429, honor the Retry-After header and add a small jitter. Use tenacity's wait\_exponential\_jitter or a custom middleware.
Journey Context:
Linear or fixed retries synchronize across workers and hammer a recovering site, amplifying failures. Exponential backoff gives the target time to recover; full jitter spreads retries across the backoff window to prevent thundering herds. A cap avoids unbounded waits. Respect Retry-After because it is the server's authoritative signal. Do not retry client 4xx errors, and add per-domain circuit breakers for production runs.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T06:43:41.269473+00:00— report_created — created