En primer lugar, mi problema es bastante similar a this one. Me gustaría un tiempo de espera de urllib.urlopen() para generar una excepción que pueda manejar.¿Cómo manejar el tiempo de espera de urllib en Python 3?
¿Esto no cae bajo 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.')
El mensaje de error:.
resp = urllib.request.urlopen (req, timeout = 10) .read() descodificar ('utf-8')
Archivo "/ usr /lib/python3.2/urllib/request.py ", línea 138, en urlopen
return opener.open (url, data, timeout)
Archivo" /usr/lib/python3.2/urllib/request.py ", línea 369, en abierto
response = self._open (req, data)
Archivo" /usr/lib/python3.2/urllib/request.py ", línea 387, en _open
'_open', req)
Archivo" /usr/lib/python3.2/urllib/request.py ", línea 347, en _call_chain
resultado = func (* args)
de archivos "/usr/lib/python3.2/urllib/request.py", línea 1156, en http_open
self.do_open retorno (http.client.HTTPConnection , req)
archivo "/usr/lib/python3.2/urllib/request.py", línea 1141, en do_open
r = h.getresponse()
archivo "/usr/lib/python3.2/ http/client.py ", línea 1046, en la respuesta
re sponse.begin()
Archivo "/usr/lib/python3.2/http/client.py", línea 346, en comenzar
versión, estado, razón = self._read_status()
Archivo "/ usr/lib/python3.2/http/client.py ", línea 308, en _read_status
line = str (self.fp.readline (_MAXLINE + 1)," iso-8859-1 ")
Archivo"/usr/lib/python3.2/socket.py", línea 276, en readinto
self._sock.recv_into retorno (b)
socket.timeout: Tiempo de espera agotado
Hubo un cha importante nge en Python 3 cuando reorganizaron los módulos urllib
y urllib2
en urllib
. ¿Es posible que haya un cambio que cause esto?
Una forma fácil de descubrir los tipos de excepción es 'excepto Excepción como e: imprimir (tipo (e))' . Asumiendo que puedes reproducir tus excepciones, eso es. – polvoazul