Kodeeksempel: håndter 429 med back-off

Håndter 429 korrekt

Ved rate limit (429) skal du læse Retry-After og vente. Genforsøg med eksponentiel back-off.

JavaScript

JavaScript
async function getJson(url, key, tries = 5) {
  for (let i = 0; i < tries; i++) {
    const res = await fetch(url, { headers: { Authorization: "Bearer " + key } });
    if (res.status !== 429) return res;
    const retry = Number(res.headers.get("Retry-After")) || 2 ** i;
    await new Promise((r) => setTimeout(r, retry * 1000));
  }
  throw new Error("Rate limited efter flere forsøg");
}

Python

Python
import time, requests
def get_json(url, key, tries=5):
    for i in range(tries):
        r = requests.get(url, headers={"Authorization": f"Bearer {key}"})
        if r.status_code != 429:
            return r
        wait = int(r.headers.get("Retry-After", 2 ** i))
        time.sleep(wait)
    raise RuntimeError("Rate limited efter flere forsøg")
Er 429'en derimod en månedskvote (type: quota_exceeded), hjælper back-off IKKE — slå overage til eller opgrader plan.
Var dette nyttigt?