Currently, Asynchronous Server Gateway Interface is a topic that has acquired significant relevance in society. Its impact has been noted in different aspects of daily life, generating discussions and debates in various areas. Whether on a personal, academic or professional level, Asynchronous Server Gateway Interface has managed to capture the attention of a wide spectrum of people, arousing both interest and uncertainty. In this article, we will thoroughly explore the different aspects of Asynchronous Server Gateway Interface, analyzing its origin, evolution and consequences, in order to provide a broad and critical vision of this topic that is so relevant today.
| Version | 3.0 |
|---|---|
| Developer | ASGI Team |
| Release date | 2019-03-04[1] |
| Website | asgi |
| License | public domain[2] |
| Status | Draft |
The Asynchronous Server Gateway Interface (ASGI) is a calling convention for web servers to forward requests to asynchronous-capable Python frameworks, and applications. It is built as a successor to the Web Server Gateway Interface (WSGI).
Where WSGI provided a standard for synchronous Python applications, ASGI provides one for both asynchronous and synchronous applications, with a WSGI backwards-compatibility implementation and multiple servers and application frameworks.
An ASGI-compatible "Hello, World!" application written in Python:
async def application(scope, receive, send):
event = await receive()
...
await send({"type": "websocket.send", ...})
Where:
application, which takes three parameters (unlike in WSGI which takes only two), scope, receive and send.
scope is a dict containing details about current connection, like the protocol, headers, etc.receive and send are asynchronous callables which let the application receive and send messages from/to the client.await keyword is used because the operation is asynchronous.ASGI is also designed to be a superset of WSGI, and there's a defined way of translating between the two, allowing WSGI applications to be run inside ASGI servers through a translation wrapper (provided in the asgiref library). A threadpool can be used to run the synchronous WSGI applications away from the async event loop.