嘿,第一次发帖,我真的被 httplib2 困住了。我一直在从diveintopython3.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 对象(沿着“除”路径向下)......我不明白如何继续使用同一个对象,直到它过期并且我再创建一个。另外,有没有办法为单个请求设置超时?

谢谢您的帮助!

最佳答案

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

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

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

关于python - 在python 3中正确使用httplib2? (超时问题),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2167127/

10-11 23:10
查看更多