如何在HTTP/1.1中使用python urllib保持连接活跃

4 投票
2 回答
4873 浏览
提问于 2025-04-16 08:13

目前我在做的是这个:(Python3,urllib)

url = 'someurl'
headers = '(('HOST', 'somehost'), /  
            ('Connection', 'keep-alive'),/
            ('Accept-Encoding' , 'gzip,deflate'))
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor())
for h in headers:
    opener.addheaders.append(x)
data = 'some logging data' #username, pw etc.
opener.open('somesite/login.php, data)

res = opener.open(someurl)
data = res.read()
... some stuff here...
res1 = opener.open(someurl2)
data = res1.read()
etc.

发生的事情是这样的:

我一直从服务器那里收到压缩过的响应,而且我保持了登录状态(我在获取一些内容,如果不登录就无法访问),但我觉得每次请求的时候连接都在断开。

我这么想是因为连接速度很慢,而且每次看起来都像是重新建立了连接。有两个问题:

a) 我怎么测试连接到底是保持活着还是断开了?
b) 如何让连接在请求其他网址时保持活着?

保重哦 :)

2 个回答

0

如果你还不知道的话,python-requests库提供了一个保持连接的功能,这要归功于urllib3。

1

这个回答可能来得有点晚,不过:

你可以看看 urllib3。它是为Python 2.x准备的,但你看他们的README文档就能明白它的意思。

对了,urllib默认情况下不会保持连接活着,我现在正在为Python 3实现urllib3,准备把它放进我的工具箱里 :)

撰写回答