Wie die Umsetzung retry-Mechanismus in python-requests-Bibliothek?

Ich möchte hinzufügen eines retry-Mechanismus für python-Anfrage-Bibliothek, sodass Skripts, die verwenden, es wird wiederholt für nicht schwerwiegende Fehler.

In diesem moment ich halte es Art von Fehler wiederhergestellt werden:

  • HTTP-return-codes 502, 503, 504
  • host nicht gefunden (weniger wichtig)
  • request timeout

In der ersten Phase möchte ich wiederholen angegeben 5xx Anfragen pro minute.

Ich möchte in der Lage sein, um diese Funktionalität hinzufügen, transparent, ohne dass Sie manuell implementieren Erholung für jeden HTTP-Aufruf aus, in diese Skripts oder libraries, die mit python-requests.

dieser helfen?
das bezieht sich nur auf transport-Ebene-Fehler; socket-timeouts, SSL-Fehler, und das mag. Ein server return-code in das 500-Sortiment ist nicht abgedeckt.
Funktioniert die python-requests verarbeiten-status-code 429? tools.ietf.org/html/rfc6585 Leider, die meisten Webseiten senden unangemessen codes, wenn die rate begrenzt (wie die 503 und 404).
Anfragen enthält eine Kopie der urllib3 die Klasse Wiederholen (in Anfragen.- Pakete.util.wiederholen Sie den Vorgang.Wiederholen), die es erlauben, präzisere Steuerung, und umfasst ein backoff-Mechanismus zur Wiederholung. Für status-basierten wiederholen, verwenden Sie folgenden parameter: status_forcelist wird die Kraft von bestimmten status-code der Antwort wiederholt werden nach der Strategie, gewählt.
Ich bereits umgesetzt, was heißen würde, eine ResilientSession die Pflege übernimmt, dies in einer transparenten Art und Weise. Blick auf meine Umsetzung aus dem inneren JIRA Python-Bibliothek.

InformationsquelleAutor sorin | 2014-04-24

Schreibe einen Kommentar