Konfiguration
Konfigurieren Sie den Python-Client der Listings API: API-Schlüssel, Basis-URL, Zeitlimit, Wiederholungsversuche und Protokollierung.
Konstruktorsignatur
listingsapi.ListingsAPI( api_key: str | None = None, *, base_url: str | None = None, timeout: float = 240.0, max_retries: int = 2,)Alle Argumente sind optional. Wenn api_key nicht angegeben wird, liest der Client LISTINGSAPI_KEY aus der Umgebung und löst beim Erstellen der Instanz AuthenticationError aus, wenn keiner der beiden Werte gesetzt ist.
Optionen
API-Schlüssel
export LISTINGSAPI_KEY="your-api-key"import listingsapi # From environment (recommended)client = listingsapi.ListingsAPI() # Explicit keyclient = listingsapi.ListingsAPI(api_key="your-api-key")Zeitlimit
Der Standardwert beträgt 240.0 Sekunden. Für kurz laufende Skripte oder die interaktive Nutzung kann ein kürzeres Zeitlimit sinnvoll sein:
client = listingsapi.ListingsAPI(timeout=30.0)Das Zeitlimit gilt für jede einzelne HTTP-Anfrage. Bei Aufrufen, die mehrere Seiten abrufen (auto_paging_iter), wird das Zeitlimit für jede Anfrage unabhängig angewendet.
Wiederholungsversuche
Das SDK bindet einen urllib3-Retry-Adapter in seine requests-Sitzung ein, der Anfragen bei Antworten mit 429, 500, 502, 503 und 504 automatisch wiederholt, jedoch nur für die sicheren Methoden: GET, HEAD und OPTIONS. Schreibanfragen (POST, DELETE) werden genau einmal gesendet und lösen bei einem Fehler sofort eine Ausnahme aus. Standardmäßig erfolgen 2 Wiederholungsversuche mit exponentiell zunehmender Wartezeit und einem Backoff-Faktor von 0,5 Sekunden. Retry-After-Header werden berücksichtigt, sodass bei einem 429, der eine Wartezeit angibt, die Anfrage nach genau dieser Zeit wiederholt wird.
Die v4-API unterstützt Idempotency-Key nicht und erkennt keine wiederholten Schreibvorgänge. Daher kann ein Schreibvorgang, der das Zeitlimit überschreitet oder 5xx zurückgibt, bereits dauerhaft gespeichert worden sein. Eine ungeprüfte Wiederholung würde einen zweiten Standort, Beitrag oder eine zweite Antwort auf eine Bewertung erstellen. Lesen Sie den Datensatz anhand eines von Ihnen kontrollierten Schlüssels erneut aus, bevor Sie einen Schreibvorgang wiederholen.
# More aggressive retry for long-running batch jobsclient = listingsapi.ListingsAPI(max_retries=5) # Disable retries entirely (e.g. when you want fast failures)client = listingsapi.ListingsAPI(max_retries=0)Ein 429, der auch nach allen Wiederholungsversuchen weiterhin auftritt, wird als RateLimitError ausgelöst; unter Fehlerbehandlung finden Sie eine Anleitung zur manuellen Umsetzung von Backoff.
Basis-URL überschreiben
Nützlich für Staging-Umgebungen oder interne Proxys:
client = listingsapi.ListingsAPI(base_url="https://staging.example.com")Der abschließende Schrägstrich wird automatisch entfernt. Alle Anfragen werden unter dem Pfad /api/v4/ an diesen Ursprung gesendet.
Protokollierung
Das SDK protokolliert über das Standardmodul logging mit dem Logger listingsapi. Auf der Stufe DEBUG erfasst es die Methode und die URL jeder Anfrage (sowie die Abfrageparameter für GET); Anfrageinhalte und Ihr API-Schlüssel werden niemals protokolliert.
import logginglogging.basicConfig()logging.getLogger("listingsapi").setLevel(logging.DEBUG) import listingsapiclient = listingsapi.ListingsAPI()client.locations.list(first=1)Nächste Schritte
- Schnellstart: Ihr erster API-Aufruf
- Fehlerbehandlung: Ausnahmetypen und Hinweise zu Wiederholungsversuchen