Anleitungen

Eine fehlgeschlagene Abfrage richtig wiederholen

Ein automatischer neuer Versuch ist bei manchen Fehlern der richtige Schritt und bei anderen eine verschwendete Anfrage. Wer das falsch macht, überflutet entweder einen ohnehin überlasteten Endpunkt oder gibt eine Abfrage auf, die eine Sekunde später funktioniert hätte.

Fehler, bei denen sich ein neuer Versuch lohnt

Eine 503-Antwort bedeutet, dass der Dienst vorübergehend nicht verfügbar ist, und genau für solche vorübergehenden Zustände ist ein kurz verzögerter neuer Versuch gedacht. Ein Netzwerk-Timeout auf Ihrer Seite, bei dem Sie überhaupt keine Antwort erhalten haben, fällt in dieselbe Kategorie, da die Anfrage möglicherweise verarbeitet wurde oder auch nicht.

HTTP/1.1 503 Service Unavailable

{
  "status": "error",
  "error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}

Fehler, bei denen sich ein neuer Versuch nicht lohnt

Ein 400 bedeutet, dass die Anfrage selbst fehlerhaft war, etwa weil ein Pflichtparameter fehlt oder Koordinaten außerhalb des gültigen Bereichs liegen. Ein 401 bedeutet, dass die Authentifizierung fehlgeschlagen ist. Beides zu wiederholen, ohne das zugrunde liegende Problem zu beheben, erzeugt nur denselben Fehler erneut, und jeder Versuch zählt in den meisten Fällen trotzdem als Anfrage. Eine Wiederholungsschleife gegen eine fehlerhafte Anfrage kann Ihr Kontingent also für nichts aufbrauchen.

Wartezeiten zwischen den Versuchen erhöhen

Eine feste kurze Verzögerung ist für eine einzelne interaktive Abfrage in Ordnung, aber ein Batch-Job, der viele fehlgeschlagene Elemente wiederholt, sollte die Wartezeit schrittweise erhöhen und sie zwischen den Versuchen bis zu einer vernünftigen Obergrenze verdoppeln, damit ein kurzer Ausfall nicht in dem Moment, in dem der Dienst wieder läuft, zu einer Flut neuer Versuche führt.

429 ist ein Sonderfall

Ein 429 ist weniger ein Fehler, den man wiederholen sollte, als vielmehr ein Signal zum Innehalten. Lesen Sie den Header X-Quota-Reset und warten Sie bis zu diesem Zeitpunkt, statt mit einer kurzen festen Verzögerung erneut zu versuchen, denn ein neuer Versuch vor dem Zurücksetzen erzeugt nur immer wieder denselben 429.

Die Kosten pro Anfrage im Blick behalten

Jeder neue Versuch, der den Server erreicht, ob erfolgreich oder nicht, ist eine Anfrage. Eine Wiederholungsstrategie, die zwischen vorübergehenden und dauerhaften Fehlern unterscheidet, sorgt dafür, dass Ihr Tageskontingent und Ihr Prepaid-Guthaben für echte Arbeit verwendet werden und nicht für wiederholte Fehlschläge.

Im Kern läuft eine gute Wiederholungsstrategie darauf hinaus, „noch einmal versuchen“ von „erst das Problem beheben“ zu unterscheiden. Die Seite zu Fehlern listet jeden Fehlercode auf, den die API zurückgibt, und was ihn jeweils auslöst.