Python で比較的単純なクローラーを作成していますが、複数のページを同時にフェッチするために非同期ネットワーク ライブラリを使用したいと考えています。 ~1000/2000 の URL では、パフォーマンスが低下します (ほとんどの URL は異なるドメインからのもので、私はそれらをシャッフルしました)。Eventlet を使用してそのような数のページをクロールする最速の方法と、どのくらいの速度を得ることができますか? (フェッチ/秒のような速度)
次に例を示します。
urls = ["http://www.google.com/intl/en_ALL/images/logo.gif",
"https://wiki.secondlife.com/w/images/secondlife.jpg",
"http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif"]
import eventlet
from eventlet.green import urllib2
def fetch(url):
return urllib2.urlopen(url).read()
pool = eventlet.GreenPool()
for body in pool.imap(fetch, urls):
print "got body", len(body)