Python에서 HTTP 요청 디스패치 최적화
Python에서는 대규모 HTTP 요청을 처리하는 것이 어려울 수 있으며, 특히 수천 개의 URL과 관련된 작업의 경우 더욱 그렇습니다. . 이 기사에서는 동시성과 스레딩을 활용하여 성능을 최대화하면서 Python 2.6에서 100,000개의 HTTP 요청을 전달하는 매우 효율적인 솔루션을 살펴봅니다.
Twistedless 솔루션:
다음 코드 스니펫은 다음을 제공합니다. HTTP 요청을 동시에 보내는 빠르고 효과적인 방법:
from urlparse import urlparse from threading import Thread import httplib, sys from Queue import Queue concurrent = 200 def doWork(): while True: url = q.get() status, url = getStatus(url) doSomethingWithResult(status, url) q.task_done() def getStatus(ourl): try: url = urlparse(ourl) conn = httplib.HTTPConnection(url.netloc) conn.request("HEAD", url.path) res = conn.getresponse() return res.status, ourl except: return "error", ourl def doSomethingWithResult(status, url): print status, url q = Queue(concurrent * 2) for i in range(concurrent): t = Thread(target=doWork) t.daemon = True t.start() try: for url in open('urllist.txt'): q.put(url.strip()) q.join() except KeyboardInterrupt: sys.exit(1)
설명:
이 접근 방식은 Twisted 기반 솔루션보다 빠르면서 CPU 사용량도 줄이는 것으로 나타났습니다. Python 2.6에서 대규모 HTTP 요청을 처리하는 매우 효율적이고 안정적인 방법을 제공합니다.
위 내용은 Python 2.6에서 100,000개의 URL에 대한 HTTP 요청 전달을 어떻게 최적화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!