Mein Server führt externe Anfragen aus und ich möchte den Schaden begrenzen, den eine fehlgeschlagene Anfrage verursachen kann. Ich möchte die Anfrage in folgenden Situationen abbrechen:
Hinweis Ich suche nicht nach dem timeout
-Parameter in Anfragen, da dies nur ein Zeitlimit für Inaktivität ist. Ich kann nichts mit einem totalen Timeout oder einer Möglichkeit zur Begrenzung der Gesamtgröße zu tun haben. Ein Beispiel zeigt einen maxsize
-Parameter auf HTTPAdapter
, aber das ist nicht dokumentiert.
Wie erreiche ich diese Anforderungen mit requests
?
Sie könnten versuchen, stream=True
einzustellen und dann eine Anfrage abzubrechen, wenn Ihre Zeit- oder Größenbeschränkungen überschritten werden, während Sie die Daten in Blöcken lesen.
Ab requests
release 2.3.0 gilt die Zeitüberschreitung auch für Streaming-Anfragen. Sie müssen also nur eine Zeitüberschreitung für die erste Verbindung und jeden Iterationsschritt berücksichtigen:
Passen Sie das Zeitlimit nach Bedarf an.
Für requests
releases & lt; 2.3.0 (die diese Änderung enthielt), konnte die r.iter_content()
rendite nicht überschritten werden; Ein Server, der nicht mehr in der Mitte eines Chunks antwortet, würde die Verbindung trotzdem herstellen. Sie müssten den obigen Code in eine zusätzliche Timeout-Funktion einfügen um lang andauernde Reaktionen frühzeitig zu unterbinden.
Tags und Links python python-requests