[PYTHON] 살아있는 파이썬 urllib2
PYTHON살아있는 파이썬 urllib2
어떻게하면 파이썬의 urllib2를 사용하여 "살아있다"HTTP 요청을 할 수 있습니까?
해결법
-
==============================
1.urlgrabber 라이브러리를 사용하십시오. 여기에는 HTTP 1.1 및 keepalive를 지원하는 urllib2 용 HTTP 처리기가 포함됩니다.
urlgrabber 라이브러리를 사용하십시오. 여기에는 HTTP 1.1 및 keepalive를 지원하는 urllib2 용 HTTP 처리기가 포함됩니다.
>>> import urllib2 >>> from urlgrabber.keepalive import HTTPHandler >>> keepalive_handler = HTTPHandler() >>> opener = urllib2.build_opener(keepalive_handler) >>> urllib2.install_opener(opener) >>> >>> fo = urllib2.urlopen('http://www.python.org')
참고 : 버전 3.9.1에서 keepalive 모듈이 제거되었으므로 urlgrabber 버전 3.9.0 이하를 사용해야합니다.
파이썬 3에 대한 킵 얼라이브 모듈의 포트가 있습니다.
-
==============================
2.다음 기능이있는 urllib3을 사용해보십시오.
다음 기능이있는 urllib3을 사용해보십시오.
또는보다 포괄적 인 솔루션 - 요청 - 버전 0.8.0 (내부적으로 urllib3 사용)에서 연결 유지를 지원하고 다음과 같은 기능을 제공합니다.
-
==============================
3.또는 httplib의 HTTPConnection을 확인하십시오.
또는 httplib의 HTTPConnection을 확인하십시오.
-
==============================
4.불행히도 keepalive.py는 2009 년 9 월 25 일에 urlgrabber가 keepalive를 지원하는 pycurl에 의존하여 변경된 후 urlgrabber에서 다음과 같이 변경되었습니다.
불행히도 keepalive.py는 2009 년 9 월 25 일에 urlgrabber가 keepalive를 지원하는 pycurl에 의존하여 변경된 후 urlgrabber에서 다음과 같이 변경되었습니다.
http://yum.baseurl.org/gitweb?p=urlgrabber.git;a=commit;h=f964aa8bdc52b29a2c137a917c72eecd4c4dda94
그러나 keepalive.py의 마지막 개정판을 계속 얻을 수 있습니다.
http://yum.baseurl.org/gitweb?p=urlgrabber.git;a=blob_plain;f=urlgrabber/keepalive.py;hb=a531cb19eb162ad7e0b62039d19259341f37f3a6
-
==============================
5.urlgrabber는 Python 2.6에서 완전히 작동하지 않습니다. keepalive.py에서 다음과 같이 수정하여 이슈를 수정했습니다.
urlgrabber는 Python 2.6에서 완전히 작동하지 않습니다. keepalive.py에서 다음과 같이 수정하여 이슈를 수정했습니다.
keepalive.HTTPHandler.do_open ()에서 이것을 제거하십시오.
if r.status == 200 or not HANDLE_ERRORS: return r
그리고 이것을 삽입하십시오.
if r.status == 200 or not HANDLE_ERRORS: # [speedplane] Must return an adinfourl object resp = urllib2.addinfourl(r, r.msg, req.get_full_url()) resp.code = r.status resp.msg = r.reason return resp
-
==============================
6.집단 통증을 피 하시고 대신 요청을 사용하십시오. 해당하는 경우 기본값으로 올바른 작업을 수행하고 연결 유지를 사용합니다.
집단 통증을 피 하시고 대신 요청을 사용하십시오. 해당하는 경우 기본값으로 올바른 작업을 수행하고 연결 유지를 사용합니다.
-
==============================
7.쓰레드 세이프가 아니지만, keep-alive를하는 다소 비슷한 urlopen ()이 있습니다.
쓰레드 세이프가 아니지만, keep-alive를하는 다소 비슷한 urlopen ()이 있습니다.
try: from http.client import HTTPConnection, HTTPSConnection except ImportError: from httplib import HTTPConnection, HTTPSConnection import select connections = {} def request(method, url, body=None, headers={}, **kwargs): scheme, _, host, path = url.split('/', 3) h = connections.get((scheme, host)) if h and select.select([h.sock], [], [], 0)[0]: h.close() h = None if not h: Connection = HTTPConnection if scheme == 'http:' else HTTPSConnection h = connections[(scheme, host)] = Connection(host, **kwargs) h.request(method, '/' + path, body, headers) return h.getresponse() def urlopen(url, data=None, *args, **kwargs): resp = request('POST' if data else 'GET', url, data, *args, **kwargs) assert resp.status < 400, (resp.status, resp.reason, resp.read()) return resp
from https://stackoverflow.com/questions/1037406/python-urllib2-with-keep-alive by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 다른 문자열의 단어 목록 확인 [duplicate] (0) | 2018.10.06 |
---|---|
[PYTHON] 파일이 비어 있는지 확인하는 방법? (0) | 2018.10.06 |
[PYTHON] matplotlib에 두 번째 x 축을 추가하는 방법 (0) | 2018.10.06 |
[PYTHON] 파이썬에서 파일로부터 문자 읽기 (0) | 2018.10.06 |
[PYTHON] 파이썬에서 객체 속성 반복하기 (0) | 2018.10.06 |