2017-02-15 1 views
0

を死ぬとフリーズ、私はurllib2ので働いている、そしてそれは、特定のページに凍結し続けます。 Ctrl-Cは操作をキャンセルしません。それはエラーを投げている(私はすべてをキャッチしている)、私はそれを壊す方法を見つけることができません。 urllib2のタイムアウトオプションはデフォルトでは決してありませんか?Pythonのurllib2の - 接続が一時的にそう

がここに手順です:次に

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

、インターネットの接続が復元されていても、(それをダウンロードする)二行目の途中で切ってしまった場合、これはプログラムを完全にフリーズします。

ここで私は、同じページから自分のブラウザ(クローム)で取得レスポンスヘッダです:

 
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.は、 urlは大きなWordPressフィードで、レスポンスに応じて圧縮されて表示されます。

答えて

1

docsによると、デフォルトのタイムアウトは、確かに、タイムアウトではありません。しかしurlopenを呼び出すときには、タイムアウトを指定することができます。 :)

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

スウィート!素晴らしい仕事を!どうも :) – Codesmith

関連する問題