Acelerar el rastreo es básicamente el caso de uso principal de Eventlet. Es muy rápido: tenemos una aplicación que debe alcanzar 2,000,000 de URL en pocos minutos. Hace uso de la interfaz de evento más rápida en su sistema (epoll, en general), y utiliza los hilos verdes (que se construyen sobre corutinas y son muy económicos) para que sea más fácil escribir.
Aquí es an example from the docs:
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):
body = urllib2.urlopen(url).read()
return url, body
pool = eventlet.GreenPool()
for url, body in pool.imap(fetch, urls):
print "got body from", url, "of length", len(body)
Este es un muy buen punto de partida para el desarrollo de un rastreador más con todas las funciones. No dude en ingresar a #eventlet en Freenode para pedir ayuda.
[actualización: He añadido un recursive web crawler example más complejo a los documentos. Juro que estaba en proceso antes de que se hiciera esta pregunta, pero la pregunta finalmente me inspiró para terminarla. :)]
el segundo enlace ya no funciona. –