用Python发送100,000个HTTP请求的最快方法是什么?

我正在打开一个具有100,000个URL的文件。我需要向每个URL发送一个HTTP请求并打印状态代码。我正在使用Python 2.6,到目前为止,我们研究了Python实现线程/并发性的许多令人困惑的方式。我什至看过python 并发库,但无法弄清楚如何正确编写此程序。有没有人遇到过类似的问题?我想通常我需要知道如何尽快地在Python中执行数千个任务-我想这意味着“同时”。

回答:

无捻解决方案:

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)

这比扭曲的解决方案要快一点,并且使用的CPU更少。

以上是 用Python发送100,000个HTTP请求的最快方法是什么? 的全部内容, 来源链接: utcz.com/qa/433126.html

回到顶部