2011-08-25 6 views
0

HTTPS 요청을 실시간 스트림으로 만들고 연결을 계속 열어 콘텐츠를 계속 읽고 처리 할 수있게하려고합니다.Python의 지속적인 HTTPS 연결

저는 스크립트를 파이썬으로 작성하고 싶습니다. 내 스크립트에서 연결을 유지하는 방법을 잘 모르겠습니다. 나는 성공적으로 연결을 유지하는 컬 (curl)로 엔드 포인트를 테스트했다. 하지만 파이썬에서는 어떻게해야합니까? 현재 다음 코드를 가지고 있습니다.

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 응답으로 전달되는 것 같습니다. 그렇습니까? 그렇다면 파이썬에 내장 된 urllib2.urlopen()을 사용할 수 있습니다. 서버가 끊어 질 때까지 원하는만큼 읽을 수있는 파일과 유사한 객체를 반환합니다.

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

urllib2가 HTTPS를 말하고 있지만, 그것은 서버 인증서의 유효성을 검사하지 않는다는 것을 명심하십시오, 그래서 당신은 시도하고 추가 패키지를 pycurl 또는 urlgrabber처럼 더 나은 보안을 위해 할 수 있습니다. (urlgrabber가 https를 지원하는지 잘 모르겠습니다.)

0

httplib2이 지원합니다. (내가 가장 성숙한 옵션을 생각했는데, 아직 urllib3 몰랐다. 그래서 TokenMacGuy가 여전히 맞을 수도있다.)

EDIT : httplib2가 지속적인 연결을 지원하지만, 나는 당신이 정말로 스트림을 소비 할 수 있다고 생각하지 않는다. 그것은 (즉, 하나의 긴 응답 대 동일한 연결에 대한 여러 요청), 나는 이제 당신이 필요로 할지도 모른다.