[Python-es] HTTP Persistent y Pipelining

Juan Luis Cano Rodríguez juanlu001 en gmail.com
Mie Feb 1 10:09:00 CET 2012


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 <jcea en jcea.es>

> -----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                         _/_/      _/_/_/        _/_/_/
> jcea en jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
> jabber / xmpp:jcea en jabber.org         _/_/    _/_/          _/_/_/_/_/
> .                              _/_/  _/_/    _/_/          _/_/  _/_/
> "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
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120201/d6322476/attachment.html>


Más información sobre la lista de distribución Python-es