Servidor Python Comet
cometd python-stackless (7)
Estoy construyendo una aplicación web que tiene un feed en tiempo real (similar al suministro de noticias de Facebook) que quiero actualizar a través de un mecanismo de larga duración. Entiendo que con Python, mis opciones son usar Stackless (construyendo a partir de su ejemplo Comet wsgi) o Cometd + Twisted. Lamentablemente, hay muy poca documentación sobre estas opciones y no puedo encontrar buena información en línea sobre los usuarios de escala de producción de cometa en Python.
¿Alguien ha implementado con éxito cometa en Python en un sistema de producción? ¿Cómo lo hizo y dónde puedo encontrar recursos para implementar el mío?
Aquí hay un ejemplo completo de combinación de Django, Orbited y Twisted para crear una aplicación en tiempo real (Comet): http://github.com/clemesha/hotdot usando Python.
He hecho toneladas de API utilizando twisted para cosas como esa, la mayoría de las cuales están disponibles en mi cuenta de github .
La mayoría son del lado del cliente, pero slosh es un servidor que escribí para hacer una especie de pubsub en tiempo real. Se escala de forma algo horizontal para las lecturas al permitir la replicación de secuencias simples. Las escrituras son un poco diferentes cuando te apegas a HTTP simple, pero he enviado una cantidad decente para una demostración.
De lo contrario, tiene BOSH completo que la mayoría de los servidores XMPP admiten y le permitirá desacoplar la distribución de mensajes de la interfaz web.
No lo he hecho, pero este tipo tiene y escribe un buen artículo al respecto, con ejemplos y punteros de Django (que no he revisado) para otros marcos.
Te recomiendo que uses StreamHub Comet Server , es utilizado por mucha gente, personalmente lo uso con un par de sitios de Django que ejecuto. Necesitarás escribir un poco de Java para manejar la transmisión, lo hice usando Jython . El código de la interfaz es algo muy simple Javascript a la:
StreamHub hub = new StreamHub();
hub.connect("http://myserver.com/");
hub.subscribe("newsfeed", function(sTopic, oData) { alert("new news item: " + oData.Title); });
La documentación es bastante buena. Tuve problemas similares cuando intentaba comenzar con los escasos documentos de Cometd et al. Para empezar, leí Getting Started With Comet y StreamHub , descargué y veo cómo algunos de los ejemplos funcionan y hacen referencia a los documentos de la API si es necesario:
las soluciones en órbita y redis son agradables, pero no más relevantes cuando tienes algo como PubSubHubbub que Google lanzó. Esto hace que sea muy fácil ser el editor o el suscriptor de un feed determinado. http://code.google.com/p/pubsubhubbub/
Aquí hay un ejemplo que hace largas encuestas con gevent y Django .
Utiliza la funcionalidad de conmutación de pila de Greenlet de Stackless packaged como una extensión de CPython.
Orbited parece una buena solución. No lo he probado sin embargo.
Actualización : las cosas han cambiado en los últimos 2.5 años.
Ahora tenemos websockets en todos los principales navegadores, excepto IE (naturalmente) y un par de muy buenas abstracciones sobre él, que ofrecen muchos métodos para emular la comunicación en tiempo real.
- socket.io junto con tornadio (socket.io 0.6) y tornadio2 (socket.io 0.7+)
- sock.js junto con SockJS-tornado