[pyar] geventreactor + monkey.patch_all en produccion?

Jorge Puente Sarrín puentesarrin en gmail.com
Lun Sep 23 16:10:23 ART 2013


Hola Gonzalo,


2013/9/23 Gonzalo Larralde <gonzalolarralde en gmail.com>

> 2013/9/19 Jorge Puente Sarrín <puentesarrin en gmail.com>
>
>> Hola Gonzalo,
>>
>> Es la primera vez que participo en esta lista y me gusta mucho su
>> actividad.
>>
>> Tu propuesta me parece bastante interesante y lo digo porque me parece
>> muy bueno eso de combinar Twisted con Greenlet, no sabría darte alguna
>> opinión sobre estos módulos, pero me anima mucho a investigarlos.
>>
>> Lo que si veo algo inquietante es el ORM que estás usando, no sé en qué
>> parte exactamente lo estás usando (ni qué tanto). MongoEngine utiliza
>> PyMongo y es un driver bloqueante y me imagino que podrías encontrar muchas
>> mejoras usando Motor o MongoTor.
>>
>> https://github.com/mongodb/motor
>> https://github.com/marcelnicolay/mongotor
>>
>> Motor es un driver asíncrono para Tornado y MongoDB que utiliza Greenlet
>> para su IOStream y está bien mantenido por MongoDB Inc., mientras que
>> MongoTor es puramente Tornado y tiene un ORM incluido (y a mi parecer
>> pretender funcionar igual que el de Django). Existe otro que es asyncmongo
>> que lo había liberado Bit.ly, pero ya no está mantenido y no soporta
>> ReplicaSets.
>>
>> Quizá no sea una opción para ti usar Tornado, pero sólo como acotación,
>> haciendo ese cambio no tendrías problemas con Pika porque también tiene un
>> adaptador para que la conexión utilice este bucle de eventos.
>>
>>
>> https://github.com/pika/pika/blob/master/pika/adapters/tornado_connection.py
>>
>> Saludos.
>>
>
> Hola Jorge!
>
> Primero lo primero. Por suerte, hace algunas versiones PymMongo agregó
> soporte explicito para Gevent:
> http://api.mongodb.org/python/current/examples/gevent.html Por lo cual
> "deja" de ser bloqueante cuando Gevent patchea la librería de sockets. Eso
> incluye al mongoengine, claro.
>
> De cualquier manera ya mismo estoy tomando nota de Motor. Creo que puede
> ser una muy buena opción para algún próximo proyecto Web. Creo que no lo
> aclaré, pero este proyecto no es web. La conexión es constante con el
> servidor mientras el cliente esté vivo, y el protocolo fue desarrollado
> para la app.
>
> Volviendo al tema Twisted, lo que hace geventreactor en realidad es hacer
> de Gevent un reactor para Twisted. Por ende (según lo que entiendo) Twisted
> en si deja de tener un protagonismo "activo" en cuanto a manejo de recursos
> y pasa a ser el framework que se encarga de interpretar los pedidos y
> generar el envio de respuestas, pero no que hace el manejo de sockets. Tal
> vez estoy subestimando un poco el rol de Twisted en esta configuración,
> pero entiendo que no queda en mucho mas que eso.
>
> Muchas gracias por tu respuesta. Ni bien termine con este proyecto y pueda
> empezar con otras cosas voy a pegarle una mirada a Motor.
>
> --
> Slds,
>
> Gonzalo.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>


Gracias por tomar en cuenta mis comentarios. Tan solo quisiera aclarar que
tampoco había pensado en que tu proyecto era web.

También puedes hacer tu propio protocolo con Tornado. Hace poco hice un
pequeño servidor SMTP basándome en el código de smtpd -me falta aún
aprender sobre autenticación para añadirle, pero va bien-; la clase del
manejo de sockets de Tornado es genial, ya que se separó de la lógica del
WebServer en la versión 3.0.

https://github.com/puentesarrin/bonzo
https://github.com/facebook/tornado/commit/b3d8cd307491323e5cbb6d0ca182744ac12c55c6

Saludos.

-- 
Jorge Puente Sarrín.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130923/fccdb184/attachment.html>


More information about the pyar mailing list