headers - urllib python 3 put
¿Manejando el tiempo de espera de urllib2?-Python (2)
Estoy usando el parámetro de tiempo de espera dentro de Urloib2''s urlopen.
urllib2.urlopen(''http://www.example.org'', timeout=1)
¿Cómo le digo a Python que, si el tiempo de espera expira, se debe generar un error personalizado?
¿Algunas ideas?
En Python 2.7.3:
import urllib2
import socket
class MyException(Exception):
pass
try:
urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError as e:
print type(e) #not catch
except socket.timeout as e:
print type(e) #catched
raise MyException("There was an error: %r" % e)
Hay muy pocos casos en los que desee usar, except:
Al hacerlo, se captura cualquier excepción, que puede ser difícil de depurar, y captura excepciones como SystemExit
y KeyboardInterupt
, que pueden hacer que su programa sea molesto de usar.
De la forma más simple, atrapará urllib2.URLError
:
try:
urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
raise MyException("There was an error: %r" % e)
Lo siguiente debe capturar el error específico generado cuando la conexión expira:
import urllib2
import socket
class MyException(Exception):
pass
try:
urllib2.urlopen("http://example.com", timeout = 1)
except urllib2.URLError, e:
# For Python 2.6
if isinstance(e.reason, socket.timeout):
raise MyException("There was an error: %r" % e)
else:
# reraise the original error
raise
except socket.timeout, e:
# For Python 2.7
raise MyException("There was an error: %r" % e)