Timeout
Um zu verhindern, dass der Server nicht rechtzeitig antwortet, sollten die meisten an externe Server gesendeten Anfragen den Timeout-Parameter enthalten. Standardmäßig kommt es bei Anfragen nicht automatisch zu einer Zeitüberschreitung, es sei denn, es wird explizit ein Zeitüberschreitungswert angegeben. Ohne Zeitüberschreitung kann Ihr Code mehrere Minuten oder länger hängen bleiben.
Das Verbindungszeitlimit bezieht sich auf die Anzahl der Sekunden, die Request wartet, wenn Ihr Client eine Verbindung zum Remote-Maschinen-Port herstellt (entsprechend connect()). Eine gute Vorgehensweise besteht darin, das Verbindungszeitlimit auf einen Wert festzulegen, der etwas größer als ein Vielfaches von 3 ist, da die Standardgröße des TCP-Paket-Neuübertragungsfensters 3 beträgt.
Im Bereich des Crawler-Proxys stoßen wir häufig auf das Problem des Anforderungszeitlimits. Der Code bleibt dort hängen, es wird kein Fehler gemeldet und es erfolgt keine Antwort auf Anfragen.
Verwandte Empfehlungen: „Python-Video-Tutorial“
Die übliche Verarbeitung besteht darin, der Anweisung „requests.get()“ eine Zeitüberschreitung hinzuzufügen, um die Anforderungszeit zu begrenzen.
req = requests.get(url, headers=headers, proxies=proxies, timeout=5)
Wenn Sie feststellen, dass das Problem der langfristigen Nichtantwort weiterhin besteht, nachdem Sie Timeout=5 eingestellt haben, können Sie die Parameter im Timeout verfeinern
Nachdem Sie die folgenden Änderungen vorgenommen haben, Das Problem wird verschwinden
req = requests.get(url, headers=headers, proxies=proxies, timeout=(3,7))
Timeout vergeht in einem Tupel (3,7). Die erste Ziffer ist das Timeout der Verbindungsverbindung und die zweite Ziffer ist das Timeout des Lesens
Wenn es auftritt während der Verwendung von timeout ValueError Fehlermeldung (ähnlich: ValueError: Timeout value connect war Timeout(connect=2.0, read=2.0, total=None), aber es muss ein int oder float sein. ), Dies ist die Python-Requests-Version. Ein Fehler in Version 2.4.3-4 erfordert, dass wir Anfragen aktualisieren
pip install -U requests
Das obige ist der detaillierte Inhalt vonWas bedeutet Anforderungszeitlimit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!