Ich sammle Statistiken auf einer Liste von Websites und verwende der Einfachheit halber Anfragen dafür. Hier ist mein Code:
data=[]
websites=['http://google.com', 'http://bbc.co.uk']
for w in websites:
r= requests.get(w, verify=False)
data.append( (r.url, len(r.content), r.elapsed.total_seconds(), str([(l.status_code, l.url) for l in r.history]), str(r.headers.items()), str(r.cookies.items())) )
Jetzt möchte ich requests.get
nach 10 Sekunden eine Zeitüberschreitung feststellen, damit die Schleife nicht hängen bleibt.
Diese Frage ist von Interesse gewesen , bevor auch , aber keine der Antworten ist sauber. Ich werde etwas Kopfgeld darauf setzen, um eine nette Antwort zu bekommen.
Ich höre, dass es vielleicht eine gute Idee ist, keine Anfragen zu verwenden, aber wie soll ich dann die netten Angebote für Anfragen erhalten? (die im Tupel)
python
timeout
python-requests
Kiarash
quelle
quelle
Antworten:
Was ist mit Eventlet? Wenn Sie die Anforderung nach 10 Sekunden überschreiten möchten, auch wenn Daten empfangen werden, funktioniert dieses Snippet für Sie:
quelle
eventlet.monkey_patch()
erforderlich?socket
Modul muss mit Affen gepatcht sein, also brauchst du wenigstens eineneventlet.monkey_patch(socket=True)
requests.get('https://github.com', timeout=5)