【问题标题】:Python urllib2 - Freezes when connection temporarily diesPython urllib2 - 连接暂时中断时冻结
【发布时间】:2017-07-04 14:18:38
【问题描述】:

所以,我正在使用 urllib2,它在特定页面上一直冻结。甚至 Ctrl-C 也不会取消操作。它没有抛出任何错误(我正在捕捉一切),我不知道如何打破它。 urllib2 是否有默认为从不的超时选项?

程序如下:

req = urllib2.Request(url,headers={'User-Agent':'......'}) page = urllib2.urlopen(req) //附注我没有安装任何开瓶器

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

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

HTTP/1.1 200 正常 日期:格林威治标准时间 2017 年 2 月 15 日星期三 18:12:12 内容类型:application/rss+xml;字符集=UTF-8 内容长度:247377 连接:保持活动 ETag:“00e0dd2d7cab7cffeca0b46775e1be7e” X-Robots-标签:noindex,关注 关联: ; rel="https://api.w.org/" 内容编码:gzip 变化:接受编码 缓存控制:max-age=600,私有,必须重新验证 过期:2017 年 2 月 15 日星期三 18:12:07 GMT X-Cacheable:否:不可缓存 接受范围:字节 X-Served-From-Cache:是 服务器:cloudflare-nginx CF-RAY:331ab9e1443656d5-IAD

附言该 url 指向一个大型 WordPress 提要,根据响应,该提要看起来是压缩的。

【问题讨论】:

    标签: python-2.7 urllib2 freeze


    【解决方案1】:

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

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

    【讨论】:

    • 甜蜜!工作得很好!谢谢 :)
    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2022-08-05
    • 2015-09-09
    • 1970-01-01
    • 2018-09-28
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多