La Interfaz de Puerta de Enlace de Servidor Asíncrono ( ASGI ) es una convención de llamada que utilizan los servidores web para reenviar solicitudes a marcos de trabajo y aplicaciones de Python con capacidad asíncrona . Se diseñó como sucesora de la Interfaz de Puerta de Enlace de Servidor Web (WSGI).
Mientras que WSGI proporcionaba un estándar para aplicaciones Python síncronas, ASGI proporciona uno tanto para aplicaciones asíncronas como síncronas, con una implementación compatible con versiones anteriores de WSGI y múltiples servidores y marcos de aplicación.
Ejemplo
Una aplicación " Hola, mundo! " compatible con ASGI escrita en Python :
async def aplicación ( ámbito , recibir , enviar ):evento = esperar a recibir ()...esperar a enviar ({ "tipo" : "websocket.send" , ... })Dónde:
- La línea 1 define una función asíncrona llamada
application, que toma tres parámetros (a diferencia de WSGI que solo toma dos),scope,receiveysend.scopees un archivodictque contiene detalles sobre la conexión actual, como el protocolo, los encabezados, etc.receiveysendson funciones asíncronas que permiten a la aplicación recibir y enviar mensajes desde/hacia el cliente.
- La línea 2 recibe un evento entrante, por ejemplo, una solicitud HTTP o un mensaje WebSocket.
awaitSe utiliza la palabra clave porque la operación es asíncrona. - La línea 4 envía una respuesta al cliente de forma asíncrona. En este caso, se trata de una comunicación WebSocket.
Compatibilidad con la interfaz de puerta de enlace del servidor web (WSGI)
ASGI también está diseñado para ser un superconjunto de WSGI , y existe un método definido para la traducción entre ambos, lo que permite ejecutar aplicaciones WSGI dentro de servidores ASGI mediante un envoltorio de traducción (proporcionado en la biblioteca asgiref). Se puede utilizar un grupo de subprocesos para ejecutar las aplicaciones WSGI síncronas fuera del bucle de eventos asíncronos.
Véase también
Referencias
Enlaces externos
- Documentación de la interfaz de puerta de enlace de servidor asíncrono
- Especificación de la interfaz de puerta de enlace de servidor asíncrono
- Software libre programado en Python
- Python (lenguaje de programación)