Die Nutzung Ihres Schlüssels überwachen, bevor Sie an ein Limit stoßen
Wenn Sie Ihre Kontingent-Header laufend beobachten, wissen Sie, wann ein Limit näher rückt, lange bevor eine Anfrage tatsächlich abgelehnt wird.
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.
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"}
}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.
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.
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.
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.