J'utilise le module urllib2 et sa fonction urlopen() pour récupérer
quelques pages HTML sur Internet.
Hélas, parfois le serveur que j'interroge est injoignable et mon appli se
bloque sur cette attente sans générer d'exception.
Existe un timeout qui me permettrait de déclencher une exception lorsque
un délai d'attente est dépassé ?
Un 'pydoc urllib2' ne me dit rien sur le sujet :-(
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Adrien Di Mascio
Bonjour,
Le Mon, 14 Feb 2005 16:31:33 +0100, J.Pierre Pourrez a écrit :
J'utilise le module urllib2 et sa fonction urlopen() pour récupérer quelques pages HTML sur Internet. Existe un timeout qui me permettrait de déclencher une exception lorsque un délai d'attente est dépassé ?
Sans être un spécialiste, ceci devrait fonctionner :
File "<stdin>", line 1, in ? File "/usr/lib/python2.3/urllib2.py", line 129, in urlopen return _opener.open(url, data) File "/usr/lib/python2.3/urllib2.py", line 326, in open '_open', req) File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain result = func(*args) File "/usr/lib/python2.3/urllib2.py", line 901, in http_open return self.do_open(httplib.HTTP, req) File "/usr/lib/python2.3/urllib2.py", line 890, in do_open code, msg, hdrs = h.getreply() File "/usr/lib/python2.3/httplib.py", line 1052, in getreply response = self._conn.getresponse() File "/usr/lib/python2.3/httplib.py", line 781, in getresponse response.begin() File "/usr/lib/python2.3/httplib.py", line 273, in begin version, status, reason = self._read_status() File "/usr/lib/python2.3/httplib.py", line 231, in _read_status line = self.fp.readline() File "/usr/lib/python2.3/socket.py", line 323, in readline data = recv(1) socket.timeout: timed out
Il existe aussi, de mémoire (parce que c'est quand même une question fréquemment posée), un module timeoutsocket.py qque part sur le web ...
En espérant que ça aide, Cordialement, Adrien.
-- Adrien Di Mascio LOGILAB, Paris (France). http://www.logilab.com http://www.logilab.fr http://www.logilab.org
Bonjour,
Le Mon, 14 Feb 2005 16:31:33 +0100, J.Pierre Pourrez a écrit :
J'utilise le module urllib2 et sa fonction urlopen() pour récupérer
quelques pages HTML sur Internet.
Existe un timeout qui me permettrait de déclencher une exception lorsque
un délai d'attente est dépassé ?
Sans être un spécialiste, ceci devrait fonctionner :
File "<stdin>", line 1, in ?
File "/usr/lib/python2.3/urllib2.py", line 129, in urlopen
return _opener.open(url, data)
File "/usr/lib/python2.3/urllib2.py", line 326, in open
'_open', req)
File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain
result = func(*args)
File "/usr/lib/python2.3/urllib2.py", line 901, in http_open
return self.do_open(httplib.HTTP, req)
File "/usr/lib/python2.3/urllib2.py", line 890, in do_open
code, msg, hdrs = h.getreply()
File "/usr/lib/python2.3/httplib.py", line 1052, in getreply
response = self._conn.getresponse()
File "/usr/lib/python2.3/httplib.py", line 781, in getresponse
response.begin()
File "/usr/lib/python2.3/httplib.py", line 273, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.3/httplib.py", line 231, in _read_status
line = self.fp.readline()
File "/usr/lib/python2.3/socket.py", line 323, in readline
data = recv(1)
socket.timeout: timed out
Il existe aussi, de mémoire (parce que c'est quand même une question
fréquemment posée), un module timeoutsocket.py qque part sur le web ...
En espérant que ça aide,
Cordialement,
Adrien.
--
Adrien Di Mascio
LOGILAB, Paris (France).
http://www.logilab.com http://www.logilab.fr http://www.logilab.org
Le Mon, 14 Feb 2005 16:31:33 +0100, J.Pierre Pourrez a écrit :
J'utilise le module urllib2 et sa fonction urlopen() pour récupérer quelques pages HTML sur Internet. Existe un timeout qui me permettrait de déclencher une exception lorsque un délai d'attente est dépassé ?
Sans être un spécialiste, ceci devrait fonctionner :
File "<stdin>", line 1, in ? File "/usr/lib/python2.3/urllib2.py", line 129, in urlopen return _opener.open(url, data) File "/usr/lib/python2.3/urllib2.py", line 326, in open '_open', req) File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain result = func(*args) File "/usr/lib/python2.3/urllib2.py", line 901, in http_open return self.do_open(httplib.HTTP, req) File "/usr/lib/python2.3/urllib2.py", line 890, in do_open code, msg, hdrs = h.getreply() File "/usr/lib/python2.3/httplib.py", line 1052, in getreply response = self._conn.getresponse() File "/usr/lib/python2.3/httplib.py", line 781, in getresponse response.begin() File "/usr/lib/python2.3/httplib.py", line 273, in begin version, status, reason = self._read_status() File "/usr/lib/python2.3/httplib.py", line 231, in _read_status line = self.fp.readline() File "/usr/lib/python2.3/socket.py", line 323, in readline data = recv(1) socket.timeout: timed out
Il existe aussi, de mémoire (parce que c'est quand même une question fréquemment posée), un module timeoutsocket.py qque part sur le web ...
En espérant que ça aide, Cordialement, Adrien.
-- Adrien Di Mascio LOGILAB, Paris (France). http://www.logilab.com http://www.logilab.fr http://www.logilab.org