2010-08-10 6 views
7

Me ha gustado erlang, y es un ajuste arquitectónico genial (tos) para mi problema. Mientras tanto, todavía me gusta imaginar que puedo ejecutar los procesos de erlang & pasando el mensaje asincrónico en python (actualmente estoy en terapia para librarme de esta obsesión).0MQ con hilos verdes?

Durante un atracón reciente me encontré con 0MQ & Me gustan sus funciones de mensajería. Estos pueden ser evidentes para un experto en erlang/OTP, pero solo soy un humilde programador de python (mi psiquiatra sin dudas leerá este ingenioso argumento). El 0MQ user-guide indica que usa subprocesos nativos del sistema operativo y no hilos virtuales "verdes".

  1. ¿Hay una manera de hacer el trabajo con 0MQ decir eventlet/GEvent?

  2. O, ¿debería evitar el monstruo de ojos verdes y aferrarme a un solo hilo de la aplicación Python, con E/S no bloqueante manejado por 0MQ en cola de mensajes & su propio uso (habilidoso) de hilos nativos?

  3. O comprobar fuera de la rehabilitación & volver a Erlang?

Respuesta

3

respuesta a un hilo rancio porque soy un poco en el mismo barco. Pensé que compartiría mis pensamientos.

1: Parece que todo el trabajo pesado ya se ha hecho: https://github.com/traviscline/gevent-zeromq ha integrado el bucle GEvent con un socket de no bloqueo ZMQ e incluso algunas aceleraciones CPython. También parece ser (en el momento de escribir esto), razonablemente bien mantenido.

2: Depende; si está escribiendo algo que puede usar zmq sin una tonelada de lógica de eventos externos, entonces simplemente debe usar zmq. Si OTOH necesita integrarse con otros protocolos, es posible que desee usar gevent (o retorcido quizás, aunque ahora no tiene ningún zmq funcional). Mis proyectos generalmente requieren múltiples protocolos (es decir: gestor de colas privado, http público, https público, memcache privado, etc.), así que estoy investigando el cambio a gevent para un cambio de proyecto más rápido que mi favorito actual: retorcido.

3: Es posible que desee omitir completamente zmq e integrar con una solución existente basada en erlang como rabbitMQ; las ventajas de rendimiento de zmq pueden no ser tan importantes como crees, y luego tienes una cola de mensajes erlang que se integra fácilmente con python con las bibliotecas existentes.

Ver también: Messsage Queue comparison at second life wiki

Cuestiones relacionadas