Para alta escala, lo más importante es poder agrupar varios servidores. Los canales de Django pueden hacer esto. No me preocuparía demasiado el rendimiento de los servidores individuales cuando esté comenzando.
Para facilitar la lectura, es ideal si puede usar un código de estilo síncrono en lugar del estilo de devolución de llamada, al menos para la lógica de su aplicación. Hay un par de formas de abordar esto:
Una es usar un lenguaje de programación que esté controlado por eventos pero que admita la codificación de estilo sincrónico (también conocido como co-rutinas, hilos verdes o fibras). Go, C # y Erlang funcionan de esta manera de forma nativa, y ahora también se muestra una capacidad similar en otros idiomas. Node.js siempre estuvo controlado por eventos, pero ahora tiene palabras clave async / wait. Python es opcionalmente impulsado por eventos, y últimamente admite palabras clave asíncronas / en espera con él.
- ¿Es el patrón modelo-vista-controlador apropiado (o incluso preferido) para aplicaciones web escritas en Javascript? ¿Por qué?
- ¿Cuál es un método fácil para crear una aplicación web 'Room Visualization'?
- ¿Cuál es la diferencia entre AppDynamics y Application Insights para Azure WebApps?
- Cómo comenzar a hacer una aplicación moderna
- Adobe Photoshop: ¿Cuál es la mejor herramienta para crear prototipos de gráficos web y de aplicaciones?
La otra forma es separar las preocupaciones asíncronas en un proceso / trabajador separado. Así es como funciona Django Channels. Maneja las partes asíncronas por usted, por lo que solo tiene que escribir código normal que no sea asincio para la lógica de su aplicación. Este es mi estilo arquitectónico preferido, y de hecho trabajo en un proyecto de código abierto llamado Pushpin que funciona de manera similar.
Con este tipo de separación de trabajadores asíncronos / sincronizados, he podido crear una variedad de aplicaciones en tiempo real utilizando el código de fondo normal de Django para la lógica. No necesita olvidar todo lo que sabe solo para la capacidad en tiempo real.