Python Lernhandbuch

Kapitel 10: REST-APIs nutzen · Abschnitt 6 von 7

Einfache Wiederholung bei Fehlern

python
import time
import httpx

def hole_mit_wiederholung(url, versuche=3):
    for versuch in range(1, versuche + 1):
        try:
            r = httpx.get(url, timeout=10)
            if r.status_code == 429 or r.status_code >= 500:
                raise httpx.HTTPStatusError('Server meldet Problem', request=r.request, response=r)
            r.raise_for_status()
            return r.json()
        except (httpx.TransportError, httpx.HTTPStatusError):
            if versuch == versuche:
                raise                          # letzter Versuch: Fehler weitergeben
            time.sleep(2 ** versuch)           # 2, 4, ... Sekunden warten

Bei 4xx-Fehlern (außer 429) lohnt sich eine Wiederholung nicht, denn dann ist die Anfrage selbst falsch.

Tipp: Bei Python-Beispielen kannst du auf ▶ Ausprobieren klicken, den Code verändern und direkt ausführen.

← Zurück