libreria headers from python timeout urllib2 urllib

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)