Pregunta

Necesito ayuda para comprender cuál es la ventaja de usar un marco asíncrono. Supongamos que quiero desarrollar una aplicación web de chat simple. ¿Por qué no puedo escribir código python en el marco de Django que realiza un sondeo largo en el que no envío una respuesta al servidor hasta que alguien ingresa un nuevo mensaje? ¿Qué proporciona Twisted que le da una ventaja para aplicaciones en tiempo real como la aplicación de chat?

Lo siento, obviamente estoy un poco confundido acerca de la necesidad de un marco asincrónico.

¿Fue útil?

Solución

Los servidores asíncronos admiten un número mucho mayor de conexiones simultáneas de clientes. Los servidores más convencionales se encuentran con límites de subprocesos y procesos cuando atienden a un gran número de clientes concurrentes, particularmente aquellos con conexiones de larga duración. Los servidores asíncronos también pueden proporcionar un mejor rendimiento ya que evitan los gastos generales de, p. cambio de contexto de hilo.

Además del marco Twisted , también hay bloques de construcción de servidores asíncronos en la biblioteca estándar de Python: anteriormente asyncore y asynchat , pero ahora también asyncio .

Otros consejos

Primero, Django es un marco para escribir aplicaciones web, por lo que proporciona ORM, plantillas html, requiere ejecutar un servidor http, etc. Twisted ayuda a escribir un código de nivel mucho más bajo que eso. Puede usar twisted para escribir el servidor http en el que se ejecuta Django. Si usa Django, está limitado al modelo http, con retorcido podría comunicarse en cualquier protocolo que desee, incluidos los protocolos push. Entonces, para su ejemplo de chat, obtiene un servidor que se escala mejor, ya que puede enviar comentarios a las personas que han iniciado sesión VS con django a cada cliente que tiene que sondear repetidamente.

editado para reflejar los comentarios de: sos-skyl

La mayor ventaja para mí es que Twisted me da una aplicación que tiene estado y puede comunicarse con muchos clientes diferentes usando muchos protocolos.

Para mí, mi servidor Twisted se comunica con varios sensores instalados en casas y negocios que monitorean el uso de energía. Almacena los datos y mantiene los datos recientes y el estado en clases prácticas de python en la memoria. Las solicitudes a través de xmlrpc de django obtienen este estado y pueden presentar datos recientes al usuario. Mis cosas de Gridspy todavía están en desarrollo, por lo que el sitio real en your.gridspy.co.nz es un poco pre-alfa.

La mejor parte es que necesitas sorprendentemente poco código para hacer un servidor efectivo. Una gran cantidad del trabajo está hecho para usted.

En Twisted puedes implementar tus propios protocolos. Django ciertamente no puede hacer esto.

Puede usar WHIFF en lugar de cualquiera :). Revisa http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom que usa un bucle de sondeo de javascript con json para verificar para actualizaciones del servidor. Probablemente podrías hacer algo similar en Django, pero no sé cómo porque renuncié a Django.

por cierto: espero mover esta demostración al motor de aplicaciones de Google como un servicio más completo cuando mi vida se calma un poco.

Si desea ver alguna fuente para integrar Twisted y Django, eche un vistazo a Yardbird .

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