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?

Eine einfache Möglichkeit, um zu entdecken, exception-Typen ist except Exception as e: print(type(e)). Vorausgesetzt, Sie können reproduzieren Ihre Ausnahmen.

InformationsquelleAutor nindalf | 2012-01-06

Schreibe einen Kommentar