2011-08-25 38 views
0

我想向实时流发出HTTPS请求并保持连接处于打开状态,以便我可以不断读取内容并对其进行处理。Python中的持久HTTPS连接

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

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

我该从哪里出发?

谢谢!

回答

1

https的任何python标准库都不提供连接保持活动功能。最成熟的选择可能是urllib3

+0

这是错误的。 stdlib中的urllib2不支持持续连接,但[httplib不支持](http://stackoverflow.com/a/9781027/4279)。虽然urllib3或[请求(建立在urllib3之上)](http://docs.python-requests.org/en/latest/index.html)是不错的选择,如果你可以使用第三方库。 – jfs

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。)

0

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

编辑:虽然httplib2确实支持持续连接,我不认为你真的可以消耗流与它(即一个长的响应与同一连接上的多个请求),我现在意识到你可能需要。