A todas las personas que utilicen Python y los servidores web les sonará WSGI. La definición para implementar servidores web. Es una capa intermedia para poder llegar a cualquier parte. Al quedarse corto nació ASGI, con una idea novedosa para llegar a las nuevas tecnologías.
Vamos a analizar esta nueva ideas, que lleva ya varios años cocinándose. Actualmente está en la versión tres, se puede utilizar con Django y ha venido para quedarse.
¿Qué es ASGI?
Para conocer realmente qué es necesitamos ir a su documentación. Su frase inicial nos encanta: Es el sucesor espiritual de WSGI. Esa frase lo resume todo. Es la definición de una nueva fórmula.
Después de WSGI se necesita avanzar, todos queremos utilizar los últimos avances. Y el más importante a día de hoy es la concurrencia. No nos referimos a tener trabajadores, solución actual a los problemas de rendimiento en diferentes frameworks, nos referimos a poder tener métodos asíncronos. Podemos empezar a ser reactivos. El usuario nos puede informar y nosotros al usuario.
El legado de WSGI.
WSGI está en nuestro día a día, está presente en la mayoría de servidores web de Python, casi todo el mundo usa Django. En una aplicación WSGI dada una petición se envía una respuesta. Por lo tanto, es un método síncrono, bloquea al hilo de ejecución hasta acabar. En pequeños proyectos funciona perfectamente con los trabajadores, pero en proyectos más grandes se desaprovecha el recurso más valioso, tiempo sin hacer nada.
Se puede seguir utilizado WSGI con ASGI
Se podría decir que la respuesta es sí pero no, no pero sí. Si leemos la propia documentación, nos dice que sí. Pero si buscamos en internet esto no es del todo cierto. A un grupo de personas no les interesa que un servidor ASGI ejecute su código WSGI. Para este caso montan un proxy delante y sólo utilizan el servidor ASGI para diversas tareas.
Por lo tanto, antes de cambiar por completo, lo mejor es probarlo y analizar el cambio. Revisar el rendimiento y la forma de utilizarlo. Así mismo, se puede ir migrando posteriormente los métodos para poder utilizar todo su potencial.
Novedades gracias a la concurrencia
Las tres novedades más importantes son: HTTP/2, websockets y reactividad. El primero de ellos nos va a permitir realizar mejoras drásticas en la velocidad de nuestra página. Nos permite utilizar el método push. Además, nos permite enviar al navegador información antes de pedirla. Todo ésto ahorrando tiempo y peticiones. Además también podemos combinar en una misma conexión múltiples peticiones.
Los websockets son un referente, una conexión desde el servidor al cliente. La conexión además puede ser reactiva. Y todo lo que es reactivo nos gusta. Poder reaccionar a eventos que suceden. Si tenemos una casa domótica nos puede informar en tiempo real, puede leer cada evento y transmitirlo a través de un websocket. Existen muchos caso de uso, por ejemplo una aplicación de mensajería en tiempo real con las personas conectadas.
Conclusiones
Todos queremos una web mejor, más rápida y eficiente. Con ASGI vamos a poder llevarlo a cabo. Es un gran avance que lleva mucho tiempo cocinándose y debería utilizarse. No tenemos por qué utilizar ninguna tecnología asíncrona en nuestro código, pero si podemos dejar al servidor utilizarla para lo que pueda necesitarlo.