Python中的持久HTTPS连接

0 投票
3 回答
3430 浏览
提问于 2025-04-17 00:22

我想要发起一个HTTPS请求,连接到一个实时数据流,并保持这个连接一直打开,这样我就可以不断读取里面的内容并进行处理。

我想用Python来写这个脚本,但我不太确定怎么才能保持连接一直打开。我用curl测试过这个接口,它能成功保持连接。但是我在Python中该怎么做呢?目前,我有以下这段代码:

c = httplib.HTTPSConnection('userstream.twitter.com')
c.request("GET", "/2/user.json?" + req.to_postdata())
response = c.getresponse()

接下来我该怎么做呢?

谢谢!

3 个回答

0

httplib2 是支持这个功能的。(我本以为这是最成熟的选择,但我之前不知道 urllib3,所以 TokenMacGuy 可能还是对的)

补充:虽然 httplib2 确实支持持久连接,但我觉得你可能无法用它真正处理流数据(也就是说,处理一个长的响应和通过同一个连接发送多个请求),我现在意识到你可能需要这个功能。

1

在Python的标准库中,没有提供连接保持活跃的功能,特别是对于HTTPS连接。最成熟的选择可能是urllib3这个库。

3

看起来你的实时数据流是通过一个不断的HTTP GET响应来传送的,对吧?如果是这样的话,你可以直接使用Python自带的urllib2.urlopen()。这个方法会返回一个像文件一样的对象,你可以一直读取,直到服务器断开连接为止。

f=urllib2.urlopen('https://encrypted.google.com/')
while True:
    data = f.read(100)
    print(data)

需要注意的是,虽然urllib2可以处理https,但它并不会验证服务器的证书,所以你可能想要尝试一些额外的工具,比如pycurl或者urlgrabber来提高安全性。(我不确定urlgrabber是否支持https。)

撰写回答