Use timeouts and retries safely
Choose retry policies that recover from transient failures without multiplying work.
- Explain deadlines, bounded retries, backoff, jitter, and idempotency keys.
Set a deadline for each request so callers do not wait forever. Retry only failures that may be transient, cap attempts, and use exponential backoff with jitter so many clients do not retry together. A retry can repeat an operation whose first result was merely delayed. Idempotent operations have the same effect when repeated; an idempotency key can let a server recognize duplicate submissions.
delays = [0.2, 0.4, 0.8]
for attempt, delay in enumerate(delays, start=1):
print(f"attempt {attempt}: wait about {delay:.1f}s")attempt 1: wait about 0.2s attempt 2: wait about 0.4s attempt 3: wait about 0.8s
The example omits jitter to keep the numbers readable. Real clients randomize delays and respect an overall deadline. A retry policy should also avoid retrying permanent errors such as invalid input.
Key takeaways
Use an overall deadline and bounded attempts.
Backoff plus jitter reduces synchronized retry load.
Idempotency keys help safely repeat side-effecting requests.
Lesson quiz
5 questions · pass with 4 correct · up to 50 XP
Passing this quiz completes the lesson and keeps your streak going. Questions you miss come back in review sessions later.
Questions about this lesson
Stuck? Ask. Figured something out? Share it. Explaining is one of the best ways to learn.
Loading posts…