Постоянные HTTPS-соединения в Python - PullRequest
0 голосов
/ 26 августа 2011

Я хочу сделать HTTPS-запрос к потоку в реальном времени и оставить соединение открытым, чтобы я мог продолжать читать содержимое и обрабатывать его.

Я хочу написать скрипт на python.Я не уверен, как сохранить соединение открытым в моем сценарии.Я проверил конечную точку с помощью curl, которая успешно поддерживает соединение.Но как мне это сделать в Python.В настоящее время у меня есть следующий код:

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

Куда мне идти отсюда?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

Похоже, ваш поток в реальном времени доставляется как один бесконечный 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.)

1 голос
/ 26 августа 2011

Функции поддержания соединения недоступны ни в одной из стандартных библиотек python для https.Наиболее зрелый вариант, вероятно, urllib3

0 голосов
/ 26 августа 2011

httplib2 поддерживает это.(Я бы подумал, что это самый зрелый вариант, еще не знал urllib3, поэтому TokenMacGuy все еще может быть прав)потоки с ним (т. е. один длинный ответ против нескольких запросов по одному и тому же соединению), который я теперь понимаю, что вам может понадобиться.

...