为什么URLLib2不支持持久连接?

7
经过扫描 urllib2 源代码,发现即使你指定了 keep-alive,连接也会自动关闭。
为什么会这样呢?
目前我只使用 httplib 来进行持久连接……但是想知道为什么 urllib2 中禁用了(或者可能只是含混不清)。
2个回答

7

这是urllib2(以及urllib)的一个众所周知的限制。在我看来,到目前为止修复并使其正确的最佳尝试是Garry Bodsworth的coda_network适用于Python 2.6或2.7 -- 替换、修补版本的urllib2(以及一些其他模块)以支持keep-alive(和一堆其他小但相当受欢迎的修复)。


Alex,终于有一个明确的答案了(“这是一个众所周知的限制”),问题仍然存在,为什么URLLib2会被写成这样? - sbartell
1
@sbartell,因为没有人觉得这个问题足够重要,以至于提交一个补丁到Python代码并被接受——我没有,你也没有,还有数百万人也是如此,他们本可以(假设他们是开源社区的体面公民)并且毫无疑问会去解决这个问题,只要他们觉得这个问题很重要。我认为Gary采取了正确的方法,通过发布第三方解决方案,可以在标准库中将事物“冻结”之前积累大量真实世界的“现场”经验,涵盖各种用途。 - Alex Martelli

3

您也可以查看httplib2,它支持持久连接。与urllib2不完全相同(因为它仅支持http而不是“任何类型的url”),但比httplib更容易(并且在我看来如果您真的想要进行http请求,比urllib2也更容易)。


httplib支持它们,我们只需重复使用相同的httpconnection对象。 - sbartell
我真的很困惑为什么urllib2不支持这个。 - sbartell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接