Maximale Wiederholungsversuche für Anfragen in Python festlegen
Dieses Tutorial beschreibt, warum wir eine Fehlermeldung erhalten, die besagt, dass die maximale Wiederholungszahl überschritten wurde, und wie wir max_retries
für Anfragen in Python festlegen können. Es gibt uns auch Tipps, wenn eine Last auf dem Server diesen Fehler verursacht.
Setzen Sie max_retries
für Requests Error, Its Causes & Solutions in Python
Bevor wir weitermachen und sehen, wie wir max_retries
für Anfragen in Python einstellen können, wollen wir zuerst einige der Probleme ansprechen.
- Erstens kann dieser Fehler auftreten, wenn Ihre URL nicht korrekt ist. Sie müssen also überprüfen, ob die von Ihnen angeforderte URL gültig ist oder nicht.
- Dieser Fehler kann auch aufgrund der Internetverbindung auftreten, stellen Sie also sicher, dass Sie alle derartigen Probleme vermeiden.
- Wir erhalten diesen Fehler auch, wenn eine Serverüberlastung vorliegt. Wenn die Server ausgelastet sind, kann diese Art von Fehler auftreten.
Hier hilft uns das Phänomen der Erhöhung der Anzahl der Wiederholungsversuche zum Anfordern der URL. Lassen Sie uns also lernen, wie Sie das tun können. Aber werfen Sie zuerst einen Blick auf den folgenden Code.
Beispielcode:
import requests
# increass retries number
retries = 4 # enter the number of retires you want to increase
requests.adapters.DEFAULT_RETRIES = retries
So können Sie die Anzahl der Wiederholungen für eine URL-Anfrage in Python erhöhen, aber wenn Sie diesen Fehler aufgrund einer Last auf dem Server erhalten, können Sie die folgenden Tipps verwenden.
Hinweis: Sie müssen das Modul
requests
in Ihrem Python mit dem folgenden Befehl installieren:
python -m pip install requests
Tipps zum Loswerden des Satzes max_retries
für Anfragen in Python
Sie können einen der folgenden Tipps verwenden, wenn die Auslastung des Servers diesen Fehler verursacht.
-
keep_alive
deaktivierenSie können die
keep_alive
-Funktionalität der Sitzung deaktivieren. Der folgende Codeabschnitt erklärt, wie Sie das tun können.request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
-
Verwenden Sie
Zeitüberschreitung
Wenn der Server überlastet, ausgelastet oder weit vom Standort entfernt ist, kann dies der Grund dafür sein, dass Sie denselben Fehler erhalten. Um dies zu vermeiden, können Sie die Reaktionszeit verlängern.
Sie können dies sowohl mit den
POST
- als auch mit denGET
-Anforderungen des Servers tun. Sehen Sie sich beispielsweise den folgenden Code an.import requests # the time in seconds in this example is increasing time by 5 req = requests.get(your_url, timeout=5) req = requests.post(your_url, timeout=5)
Sie können das Tupel auch in den
timeout
-Parametern verwenden. Der erste Parameter erhöht die Aufbauzeit und der zweite Parameter erhöht die Reaktionszeit. Das Codebeispiel ist unten angegeben.req = requests.get(your_url, timeout=(3, 6))
-
Setzen Sie einen
backoff_factor
(Delay/Sleep)backoff_factor
ist einurllib3
-Argument, das von Anfragen verwendet wird, um anfänglich eine Netzwerkverbindung aufzubauen.Sie können auch den
backoff_factor
einrichten, um die Anzahl der Versuche und die Ruhezeit jedes Versuchs zu erhöhen.Dadurch wird vermieden, dass dieser Fehler auftritt. Damit stoppen Sie den Code und lassen ihn warten, bis er die Antwort des Servers erhält.
Hier ist eine Veranschaulichung, wie
backoff_factor
Dienstanfragen verzögern kann, wenn eine fehlschlägt.# you can set a backoff factor means delay/sleep time in each retry import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry # initailize the request session request_session = requests.Session() # initailizing retry object # you can increase the number of total retires and sleep time of each retry retries = Retry(total=3, backoff_factor=1) adapter = HTTPAdapter(max_retries=retry) request_session.mount("http://", adapter) request_session.get(your_url)
Laut der
urllib3
-Dokumentation istbackoff_factor
ein Basiswert, den die Bibliothek verwendet, um das Ruheintervall zwischen Wiederholungen zu bestimmen.Zum Beispiel wird
urllib3
nach jedem erfolglosen Verbindungsversuch für{backoff_factor} * (2 (Anzahl der Gesamtversuche - 1))
Sekunden schlafen.Zum Beispiel wird
sleep()
für0.0s
,0.2s
,0.4s
, … zwischen den Wiederholungen schlafen, wenn derbackoff_factor
auf0.01
gesetzt ist. Backoff ist standardmäßig inaktiv (auf0
gesetzt).Wenn der zurückgegebene Statuscode
500
,502
,503
oder504
ist, wird zusätzlich eine Wiederholung verlangt. Um die Wiederholungen noch genauer steuern zu können, können Sie die Wiederholungen ändern.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn