No conocía esto del pipelining, parece una cosa nueva de HTTP1.1 por lo que he leído por ahí.
Aquí hay un mensaje en python-list que explica un poco las posibilidades que hay[1]. Dicen también que, según Mozilla, es una característica que no todos los servidores y proxies soportan bien aún, por lo que habría que usarla con cuidado. En python-dev hay otro mensaje sobre el tema[2], pero tiene 12 años de antiguedad... Por otro lado, en ActiveState encontré una receta para hacer pipelining con httplib[3]. Me parece que usa una especie de hack con una variable privada del módulo. A lo mejor no es exactamente lo que estás buscando, pero a lo mejor podías echarle un vistazo a gevent[4]. Es una biblioteca de concurrencia bastante ligera y sencilla de usar, y que además es de lo mejorcito que hay en cuanto a uso de recursos y velocidad, si no lo mejor[5]. Hay un tutorial incompleto por Stephen Diehl[6], y la documentación oficial... deja un poco que desear. Espero que te sirva algo de esto, un saludo Juan Luis Cano - @Juanlu001 Dead epsilon - http://juanlu001.github.com [1]: http://mail.python.org/pipermail/python-list/2007-April/1097691.html [2]: http://mail.python.org/pipermail/python-dev/2000-February/002267.html [3]: http://code.activestate.com/recipes/576673-python-http-pipelining/ [4]: http://gevent.org/intro.html [5]: http://nichol.as/benchmark-of-python-web-servers [6]: http://sdiehl.github.com/gevent-tutorial/ 2012/2/1 Jesus Cea <[email protected]> > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > ¿Alguien conoce una librería HTTP para python que soporte conexiones > persistentes y "pipelining"? > > Me gustaría algo de este estilo: > > 1. Establecer una conexión con el servidor. > 2. Hacer una petición y recibir un objeto para recoger la respuesta. > 3. Poder recoger la respuesta, o parte de ella. O no. Es necesario saber > si está entrando una respuesta o no. > 4. Hacer una nueva petición. Podemos no haber recibido aún la > respuesta anterior. > 5. Para nota: si el servidor desconecta tras la primera petición pero > habiendo peticiones en curso, establecer una conexión nueva y reenviar > las peticiones pendientes de forma transparente. Esto debería ser > configurable, porque puede puedde tratarse de peticiones no idempotentes. > > Osea, la idea es poder hacer peticiones por "pipelining" a medida que > veo que las necesito, e ir leyendo las respuestas de forma asíncrona. > Las peticiones y las respuestas van "a su bola", no las voy alternando > necesariamente. > > El programa que tengo en mente es algo de este estilo: > > 1. Establezco una conexión con el servidor. > 2. El programa va leyendo de una base de datos y cuando lo ve > necesario, mete una petición nueva al servidor. > 3. Si hay alguna respuesta esperando, la lee, tal vez parcialmente. > 4. Voy al punto 2. > > Las librerías httplib, urllib, etc., soportan conexiones persistentes, > pero no pipelining. Una búsqueda superficial por Internet no me saca > nada relevante. > > ¿Alguna idea?. > > - -- > Jesus Cea Avion _/_/ _/_/_/ _/_/_/ > [email protected] - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ > jabber / xmpp:[email protected] _/_/ _/_/ _/_/_/_/_/ > . _/_/ _/_/ _/_/ _/_/ _/_/ > "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ > "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ > "El amor es poner tu felicidad en la felicidad de otro" - Leibniz > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQCVAwUBTyimBZlgi5GaxT1NAQLp0AP9FVc6RprzQLd6fMWePhMKZhyI/tgFEGMt > b+iPlVj9Wo4xx+mY9/7Dj3y5n6NHH5XaDzdqEectk8B//LERCmzGuICTsZuz6k3Q > RDAkwu7o2o+IrXiOGocH251FgKLSLnTIOrEWswX2OANKHNNsn7DTfykchVWet8+O > S/JLcCTolBM= > =li55 > -----END PGP SIGNATURE----- > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
