Английская Википедия:Asynchronous Server Gateway Interface
Шаблон:Notability Шаблон:Short description Шаблон:Infobox The Asynchronous Server Gateway Interface (ASGI) is a calling convention for web servers to forward requests to asynchronous-capable Python programming language frameworks, and applications. It is built as a successor to the Web Server Gateway Interface (WSGI).
Where WSGI provided a standard for synchronous Python application, ASGI provides one for both asynchronous and synchronous applications, with a WSGI backwards-compatibility implementation and multiple servers and application frameworks.
Example
An ASGI-compatible "Hello, World!" application written in Python:
async def application(scope, receive, send):
event = await receive()
...
await send({"type": "websocket.send", ...})
Where:
- Line 1 defines an asynchronous function named Шаблон:Python, which takes three parameters (unlike in WSGI which takes only two), Шаблон:Python, Шаблон:Python and Шаблон:Python.
- Шаблон:Python is a Шаблон:Python containing details about current connection, like the protocol, headers, etc.
- Шаблон:Python and Шаблон:Python are asynchronous callables which let the application receive and send messages from/to the client.
- Line 2 receives an incoming event, for example, HTTP request or WebSocket message. The Шаблон:Python keyword is used because the operation is asynchronous.
- Line 4 asynchronously sends a response back to the client. In this case, it is a WebSocket communication.
Web Server Gateway Interface (WSGI) compatibility
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.
See also
- Comparison of web frameworks
- FastCGI
- Python (programming language)
- Web Server Gateway Interface (WSGI)
References
External links
- Asynchronous Server Gateway Interface Documentation
- Asynchronous Server Gateway Interface Specification
Шаблон:Python (programming language) Шаблон:Python web frameworks Шаблон:Web frameworks