Comment gérer le délai d'urllib dans Python 3?

Tout d'abord, mon problème est assez similaire à cette une. Je voudrais un délai d'attente de urllib.urlopen() pour générer une exception que je peux gérer.

N'est-ce pas tomber sous 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.')

Le message d'erreur:

resp = urllib.demande.urlopen(req, timeout=10).read().decode('utf-8')
Le fichier "/usr/lib/python3.2/urllib/request.py", la ligne 138, dans urlopen
le retour de l'ouvreur.open(url, des données, des temps d'arrêt)
Le fichier "/usr/lib/python3.2/urllib/request.py", la ligne 369, ouvert
réponse = auto._open(req, données)
Le fichier "/usr/lib/python3.2/urllib/request.py" de ligne, 387, dans _open
'_open', req.)
Le fichier "/usr/lib/python3.2/urllib/request.py", line 347, dans _call_chain
résultat = func(*args)
Le fichier "/usr/lib/python3.2/urllib/request.py" de ligne, 1156, dans http_open
retour auto.do_open(http.client.HTTPConnection, req.)
Le fichier "/usr/lib/python3.2/urllib/request.py" de ligne, 1141, dans do_open
r = h.getresponse()
Le fichier "/usr/lib/python3.2/http/client.py" de ligne, 1046, dans getresponse
réponse.begin()
Le fichier "/usr/lib/python3.2/http/client.py" de ligne, 346, à commencer
version, le statut, la raison = auto._read_status()
Le fichier "/usr/lib/python3.2/http/client.py", à la ligne 308, dans _read_status
ligne = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
Le fichier "/usr/lib/python3.2/socket.py", à la ligne 276, dans readinto
retour auto._sock.recv_into(b)
socket.délai d'attente: timed out

Il y avait un changement majeur par rapport à Python 3 lorsqu'ils ré-organisé le urllib et urllib2 modules dans urllib. Est-il possible qu'il y avait un changement, alors que les causes de cette?

source d'informationauteur nindalf