Six lessons covered: requests.get/post with timeouts, rate-limit header parsing, adaptive backoff thresholds, secrets via os.environ, per-environment config dicts, and API version pinning + dual-shape handling.
Week 3 = observability and long-running. Eight questions, 80% to pass.
| Lesson | Concept | Key syntax |
|---|---|---|
| 8 | Direct HTTP | requests.get(url, timeout=10) + r.json() |
| 9 | Rate-limit headers | int(r.headers.get("X-RateLimit-Remaining", 0)) |
| 10 | Adaptive backoff | threshold-based time.sleep(t) between calls |
| 11 | Secrets | os.environ.get("API_KEY") — never print value |
| 12 | Per-env config | CONFIGS[env] with safe-default "dev" |
| 13 | API versioning | pin via header + handle both shapes |
Week 3 = JSON logs, metrics, threshold alerts, long-running with status, queue-style processing, full synthesis.
Create a free account to get started. Paid plans unlock all tracks.
Six lessons covered: requests.get/post with timeouts, rate-limit header parsing, adaptive backoff thresholds, secrets via os.environ, per-environment config dicts, and API version pinning + dual-shape handling.
Week 3 = observability and long-running. Eight questions, 80% to pass.
| Lesson | Concept | Key syntax |
|---|---|---|
| 8 | Direct HTTP | requests.get(url, timeout=10) + r.json() |
| 9 | Rate-limit headers | int(r.headers.get("X-RateLimit-Remaining", 0)) |
| 10 | Adaptive backoff | threshold-based time.sleep(t) between calls |
| 11 | Secrets | os.environ.get("API_KEY") — never print value |
| 12 | Per-env config | CONFIGS[env] with safe-default "dev" |
| 13 | API versioning | pin via header + handle both shapes |
Week 3 = JSON logs, metrics, threshold alerts, long-running with status, queue-style processing, full synthesis.