httplib重用TCP连接吗?

时间:2014-01-10 21:00:11

标签: python httplib

我正在使用httplib从网站上获取大量资源,我想以最低成本获得它,所以我在我的请求中设置了'Connection:keep-alive'HTTP标头,但我不确定它实际上是否使用了相同的与Web服务器允许的请求数量相同的TCP连接。

i = 0
    while 1:
        i += 1
        print i
        con = httplib.HTTPConnection("myweb.com")
        con.request("GET", "/x.css", headers={"Connection":" keep-alive"})
        result = con.getresponse()
        print result.reason, result.getheaders()

我的实施是否合适? 保持活力吗? 我应该把'con = httplib.HTTPConnection(“myweb.com”)'放出循环吗?

P.S:网络服务器对keep-alive的响应没问题, 我知道urllib3

2 个答案:

答案 0 :(得分:9)

您的示例每次通过循环都会创建一个新的TCP连接,所以不会,它不会重用该连接。

这个怎么样?

con = httplib.HTTPConnection("myweb.com")
while True:
    con.request("GET", "/x.css", headers={"Connection":" keep-alive"})
    result = con.getresponse()
    result.read()
    print result.reason, result.getheaders()

另外,如果你想要的只是标题,你可以使用HTTP HEAD方法,而不是调用GET并丢弃内容。

答案 1 :(得分:0)

如果你每次循环都废弃HTTPConnection对象,它肯定无法重用连接......