2017-02-15 5 views
0

Donc, je travaille avec urllib2, et il continue de geler sur une page spécifique. Même Ctrl-C n'annulera pas l'opération. Il ne jette aucune erreur (j'attrape tout), et je n'arrive pas à comprendre comment le casser. Existe-t-il une option timeout pour urllib2 qui par défaut ne sera jamais?Python urllib2 - Gèle quand la connexion meurt temporairement

est ici la procédure:

 
req = urllib2.Request(url,headers={'User-Agent':'...<chrome's user agent string>...'}) 
page = urllib2.urlopen(req) 
// p.s. I'm not installing any openers 

Ensuite, si l'Internet est coupé à travers la deuxième mi-chemin ligne (qui télécharge), même si la connexion est rétablie, ce gèle complètement le programme.

est ici l'en-tête de réponse que je reçois dans mon navigateur (Chrome) à partir de la même page:

 
HTTP/1.1 200 OK 
Date: Wed, 15 Feb 2017 18:12:12 GMT 
Content-Type: application/rss+xml; charset=UTF-8 
Content-Length: 247377 
Connection: keep-alive 
ETag: "00e0dd2d7cab7cffeca0b46775e1be7e" 
X-Robots-Tag: noindex, follow 
Link: ; rel="https://api.w.org/" 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Cache-Control: max-age=600, private, must-revalidate 
Expires: Wed, 15 Feb 2017 18:12:07 GMT 
X-Cacheable: NO:Not Cacheable 
Accept-Ranges: bytes 
X-Served-From-Cache: Yes 
Server: cloudflare-nginx 
CF-RAY: 331ab9e1443656d5-IAD 

P.S. L'URL est à un grand flux WordPress qui, selon la réponse, semble compressé.

Répondre

1

Selon le docs, le délai d'attente par défaut est, en effet, pas de délai. Vous pouvez toutefois spécifier un délai d'attente lorsque vous appelez urlopen. :)

page = urllib2.urlopen(req, timeout=30) 
+0

Sweet! J'ai bien travaillé! THX :) – Codesmith