Prima di tutto, il mio problema è abbastanza simile a this one. Vorrei un timeout di urllib.urlopen() per generare un'eccezione che posso gestire.Come gestire il timeout di urllib in Python 3?
Questo non rientra in 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.')
Il messaggio di errore:.
resp = urllib.request.urlopen (req, timeout = 10) .read() decodificare ('utf-8')
file "/ usr /lib/python3.2/urllib/request.py "linea 138, in urlopen
opener.open ritorno (url, i dati, timeout)
File" /usr/lib/python3.2/urllib/request.py ", riga 369, in open
response = self._open (req, data)
File" /usr/lib/python3.2/urllib/request.py", la linea 387, in _open
'_open', req)
File "/usr/lib/python3.2/urllib/request.py", linea 347, in _call_chain
risultato = func (* args)
file "/usr/lib/python3.2/urllib/request.py", linea 1156, in http_open
self.do_open ritorno (http.client.HTTPConnection , req)
File "/usr/lib/python3.2/urllib/request.py", la linea 1141, in do_open
r = h.getresponse()
File "/usr/lib/python3.2/ http/client.py ", riga 1046, in getresponse
re sponse.begin()
File "/usr/lib/python3.2/http/client.py", la linea 346, in cominciano
versione, lo stato, la ragione = self._read_status()
file "/ usr/lib/python3.2/http/client.py ", riga 308, in _read_status
line = str (self.fp.readline (_MAXLINE + 1)," iso-8859-1 ")
File"/usr/lib/python3.2/socket.py", la linea 276, in readinto
ritorno self._sock.recv_into (b)
socket.timeout: scaduta
C'è stato un importante cha nge di in Python 3 quando hanno riorganizzato i moduli urllib
e urllib2
in urllib
. È possibile che ci sia stato un cambiamento in quel caso?
Un modo semplice per scoprire i tipi di eccezione è di "tranne Eccezione come e: print (type (e))' . Supponendo che tu possa riprodurre le tue eccezioni, cioè. – polvoazul