我正在使用 httplib 从网站获取大量资源,并且我希望以最低的成本获得它,因此我设置了“连接:我的请求上有“keep-alive”HTTP 标头,但我不确定它实际上对网络服务器允许的尽可能多的请求使用相同的 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")' 排除在循环之外吗?

附:Web服务器对Keep-Alive的响应还可以,我知道Urllib3

有帮助吗?

解决方案

您的示例每次通过循环都会创建一个新的 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 并丢弃内容。

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top