Python urllib2 - 连接暂时死亡时冻结

时间:2017-02-15 18:39:44

标签: python-2.7 urllib2 freeze

所以,我正在使用urllib2,它会在特定页面上保持冻结状态。甚至Ctrl-C都不会取消操作。它没有抛出任何错误(我抓住了一切),我无法弄清楚如何打破它。 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

然后,如果互联网在第二行(下载它)中途被切断,即使连接恢复,也会完全冻结程序。

以下是我在浏览器(Chrome)中从同一页面获得的响应标题:

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。网址是一个大的WordPress源,根据响应,它看起来是压缩的。

1 个答案:

答案 0 :(得分:1)

根据docs,默认超时确实没有超时。您可以在调用urlopen时指定超时。 :)

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