Sie können einen benutzerdefinierten Adapter verwenden und mehrere Wiederholungsversuche mit einem exponentiellen Backoff-Faktor für alle HTTP/HTTPS-Anfragen erzwingen. Siehe Beispiel unten:
import requests from requests import adapters from urllib3.util import Retry # Create a transport adapter with a custom retry strategy. retries = Retry( total=3, backoff_factor=3, status_forcelist=[500, 502, 503, 504] ) adapter = adapters.HTTPAdapter(max_retries=retries) # Ensure adapter is used for both HTTP and HTTPS requests. session = requests.Session() session.mount('https://', adapter) session.mount('http://', adapter) # Testing the retry mechanism response = session.get("http://httpbin.org/status/500")
Dies gibt den folgenden Fehler zurück:
RetryError: HTTPConnectionPool(host='httpbin.org', port=80): Max retries exceeded with url: /status/500 (Caused by ResponseError('too many 500 error responses'))
Das Unglückliche ist, dass es scheinbar keine Möglichkeit gibt, festzustellen, wie oft der oben genannte Mechanismus versucht hat, es erneut zu versuchen, sondern nur dann, wenn alle Versuche erschöpft sind
https://stackoverflow.com/a/47475019/4477547
Das obige ist der detaillierte Inhalt vonBis dass die „requests'-Bibliothek automatische Wiederholungsversuche mit exponentiellem Backoff unterstützt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!