Python中的持久HTTPS连接

时间:2011-08-25 23:52:14

标签: python http real-time persistent

我想向实时流发出HTTPS请求并保持连接打开,以便我可以继续从中读取内容并进行处理。

我想在python中编写脚本。我不确定如何在我的脚本中保持连接打开。我用curl测试了端点,使连接成功打开。但是我如何在Python中完成它。目前,我有以下代码:

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

我从哪里开始?

谢谢!

3 个答案:

答案 0 :(得分:3)

看起来您的实时流是作为一个无休止的HTTP GET响应提供的,是吗?如果是这样,你可以使用python的内置urllib2.urlopen()。它返回一个类似文件的对象,您可以从中读取任意内容,直到服务器挂断您为止。

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

请注意,尽管urllib2会说https,但它不会验证服务器证书,因此您可能需要尝试使用pycurlurlgrabber这样的附加包来提高安全性。 (我不确定urlgrabber是否支持https。)

答案 1 :(得分:1)

https的任何python标准库中都没有连接保持活动功能。最成熟的选项可能是urllib3

答案 2 :(得分:0)

httplib2支持此功能。 (我认为这是最成熟的选择,还不知道urllib3,所以TokenMacGuy可能仍然是正确的)

编辑:虽然httplib2支持持久连接,但我认为你不能真正使用它(即一个长响应与同一连接上的多个请求),我现在意识到你可能需要它。