Pregunta

Estamos utilizando Twisted ampliamente para aplicaciones que requieren una gran cantidad de io asíncrona. Hay algunos casos en los que la materia está obligado en lugar de la CPU y para ello generar un conjunto de procesos para hacer el trabajo y tener un sistema para la gestión de éstos a través de múltiples servidores, así - todo hecho en Twisted. Funciona genial. El problema es que es difícil de llevar a nuevos miembros del equipo a la velocidad. Escribir código asíncrono en Twisted requiere una curva de aprendizaje casi vertical. Es como si los seres humanos no piensan de esa manera natural.

Estamos considerando un enfoque mixto, tal vez. Tal vez mantener la gestión de piezas y el proceso de servidor xmlrpc en Twisted e implementar las otras cosas en el código que al menos las miradas síncronos, en cierta medida si bien no es como tal. Por otra parte me gustaría explícito sobre implícita, así que tengo que pensar en esto un poco más. De todos modos en Verdecillo - qué tan bien funciona eso las cosas? Así que hay Stackless y como se puede ver en mi avatar Gallentean Soy muy consciente de la enorme éxito en su uso para la insignia de EVE Online juego de primera mano del PCC. ¿Qué hay de Eventlet o GEvent? Bien por el momento sólo funciona con Eventlet trenzado. Sin embargo reclamaciones GEvent a ser más rápido, ya que no es una implementación de Python puro, sino más bien se basa en libevent lugar. También afirma que tiene un menor número de idiosincrasias y defectos. GEvent Es mantenido por 1 chico por lo que yo puedo decir. Esto me hace un poco recelosos, pero todos los grandes proyectos se inicia de esta manera para ... Luego está PyPy - ni siquiera he terminado de leer acerca de que uno todavía - acabo de ver en esta discusión: Los inconvenientes de Stackless .

Así que confundir - Me pregunto qué diablos hacer - sonidos como Eventlet es probablemente la mejor opción, pero ¿es realmente lo suficientemente estable? Alguien por ahí tiene alguna experiencia con ella? ¿Hay que ir con Stackless en cambio, como que ha estado presente y es una tecnología probada - al igual que Twisted es así - y lo hacen el trabajo muy bien juntos. Pero todavía me gusta tener que tener una versión separada de Python para hacer esto. qué hacer ....

Esta entrada de blog un tanto desagradable ha puesto el dedo en la cabeza para mí, sin embargo: S asíncrona para los adultos no consigo el trenzado es ser como observación de Java como me Java es normalmente donde se encuentre en el modo de pensar de roscado, pero lo que sea. Sin embargo, si esa cosa parche mono realmente funciona igual que entonces wow. Guau!

¿Fue útil?

Solución

Es posible que desee echa un vistazo a:

Eventlet y GEvent no son realmente comparables a Stackless, porque los barcos sin pérdida de velocidad con una biblioteca estándar que no tiene conocimiento de tasklets. Existen implementaciones de zócalo para Stackless pero no hay nada tan completo como < a href = "http://www.gevent.org/gevent.monkey.html" rel = "noreferrer"> gevent.monkey . CCP no utiliza esqueleto sin apilado, tiene algo que se llama sin apilado de E / S, que yo sepa es sólo para Windows y nunca fue de código abierto (?).

Tanto eventlet y GEvent se podrían hacer para funcionar en Stackless más que en greenlet. En algún momento incluso intentamos hacer esto como un proyecto GSoC , pero no encuentra un estudiante.

Otros consejos

Responder a parte de su pregunta - si nos fijamos en http://speed.pypy.org que' Veremos que el uso retorcido en la parte superior de PyPy puede le dan algunas aceleraciones. Esto depende por supuesto de su carga de trabajo, pero probablemente vale la pena echarle un vistazo.

Saludos, España Fijal

He construido una pequeña aplicación web en tiempo real en la parte superior de eventlet y repoze.bfg (renuncié a Django hace bastante tiempo). He encontrado eventlet y el mono de parches a ser tan fácil como dice Ted.

GEvent no es puro Python, y depende estrictamente de CPython. A partir de marcos web que usted ha mencionado Eventlet (OpenStack) y Tornado (FriendsFeed, Quora) tiene el mayor despliegue.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top