Wie handhaben das urllib-timeout in Python 3?
First off, mein problem ist ganz ähnlich wie diese eine. Ich möchte einen timeout das urllib.urlopen() zum generieren einer Ausnahme, die ich bewältigen kann.
Nicht in diesem Herbst unter URLError?
try:
response = urllib.request.urlopen(url, timeout=10).read().decode('utf-8')
except (HTTPError, URLError) as error:
logging.error(
'Data of %s not retrieved because %s\nURL: %s', name, error, url)
else:
logging.info('Access successful.')
Die Fehlermeldung:
resp = das urllib.Anfrage.urlopen(req, timeout=10).read().decode('utf-8')
Datei "/usr/lib/python3.2/urllib/request.py", line 138, in urlopen
Rückkehr opener.open(url, Daten, timeout)
Datei "/usr/lib/python3.2/urllib/request.py", line 369, in offenen
response = self._open(req, Daten)
Datei "/usr/lib/python3.2/urllib/request.py", line 387, in _open
'_open', req)
Datei "/usr/lib/python3.2/urllib/request.py" Linie 347, in _call_chain
Ergebnis = func(*args)
Datei "/usr/lib/python3.2/urllib/request.py" Linie 1156, in http_open
return self.do_open(http.client.HTTPConnection, req)
Datei "/usr/lib/python3.2/urllib/request.py", Zeile 1141, in do_open
r = h ist.getresponse()
Datei "/usr/lib/python3.2/http/client.py" Linie 1046, in getresponse
Antwort.begin()
Datei "/usr/lib/python3.2/http/client.py", line 346, in beginnen
version, status, Grund = selbst._read_status()
Datei "/usr/lib/python3.2/http/client.py", line 308, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
Datei "/usr/lib/python3.2/socket.py", line 276, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
Gab es eine größere Veränderung aus, die in Python 3, wenn Sie re-organisiert die urllib
und urllib2
Module in urllib
. Ist es möglich, dass es eine änderung gab, dann, dass dies die Ursache?
except Exception as e: print(type(e))
. Vorausgesetzt, Sie können reproduzieren Ihre Ausnahmen.InformationsquelleAutor nindalf | 2012-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausnahme ist der timeout aus der Buchse, so
fangen sollte die neue Ausnahme. Obwohl, ich bin mir nicht sicher, ob das Ihre Frage beantwortet, da bin ich mir nicht sicher, was deine Frage ist..
InformationsquelleAutor danodonovan
Die Vorherige Antwort nicht richtig abfangen der timeout Fehler. Timeout-Fehler sind Instanzen von URLError, wenn wir also wollen, gezielt zu fangen, müssen wir schreiben:
InformationsquelleAutor Régis B.