我正在使用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
答案 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
对象,它肯定无法重用连接......