Asynchronous Server Gateway Interface

Last updated
ASGI Specification
Version3.0
DeveloperASGI Team
Release date2019-03-04 [1]
Website asgi.readthedocs.io/en/latest/specs/index.html
License public domain [2]
StatusDraft

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).

Contents

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.

Example

An ASGI-compatible "Hello, World!" application written in Python:

asyncdefapplication(scope,receive,send):event=awaitreceive()...awaitsend({"type":"websocket.send",...})

Where:

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

References

  1. "Version History".
  2. "Copyright". GitHub . Retrieved 2022-09-14.