在python 3中正确使用httplib2? (超时问题)

问题描述 投票:0回答:3

嘿,第一次发帖,我真的被 httplib2 困住了。我一直在 divintopython3.org 上阅读它,但它没有提到超时函数。我查找文档,但我看到的唯一的东西是能够设置超时 int 但没有指定单位(秒?毫秒?如果没有,默认值是什么?)这就是我所拥有的(我也有代码要检查响应是什么,然后重试,但从未尝试过多次)

h = httplib2.Http('.cache', timeout=None)
for url in list:
    response, content = h.request(url)
    more stuff...

因此 Http 对象会一直保留到某个任意时间,但我从同一服务器下载大量页面,过了一段时间,它就挂在获取页面上。不会抛出任何错误,事情只是挂在页面上。所以我尝试:

h = httplib2.Http('.cache', timeout=None)
for url in list:
    try:
        response, content = h.request(url)
    except:
        h = httplib2.Http('.cache', timeout=None)
    more stuff...

但随后它每次都会重新创建另一个 Http 对象(沿着“例外”路径)...我不明白如何继续使用同一个对象,直到它过期并且我创建另一个对象。另外,有没有办法为单个请求设置超时?

感谢您的帮助!

python timeout python-3.x httplib2
3个回答
4
投票

由于错误httplib2测量超时以秒为单位乘以2直到版本0.7.5(2012-08-28)。


1
投票

将超时设置为 1,您很快就会知道它是指一毫秒还是一秒。

我不知道你的 try/ except 应该解决什么问题,如果它在一种情况下挂在 h.request(url) 上,它应该挂在另一种情况下。

如果您在该代码中耗尽了内存,则 httplib2 将无法正确进行垃圾收集。可能是你有循环引用(虽然它看起来不像上面的那样)或者它可能是 httlib2 中的一个错误。


0
投票

有这个完全相同的问题。超时,httplib2超时单位是秒。

© www.soinside.com 2019 - 2024. All rights reserved.