Jump to content
Wikipedia The Free Encyclopedia

Asynchronous Server Gateway Interface

From Wikipedia, the free encyclopedia
This article relies excessively on references to primary sources . Please improve this article by adding secondary or tertiary sources.
Find sources: "Asynchronous Server Gateway Interface" – news · newspapers · books · scholar · JSTOR
(June 2025) (Learn how and when to remove this message)
Calling convention for web servers
ASGI Specification
Version3.0
DeveloperASGI Team
Release date2019年03月04日[1]
Websiteasgi.readthedocs.io/en/latest/specs/index.html
Licensepublic 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).

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

[edit ]

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

async defapplication(scope, receive, send):
 event = await receive()
 ...
 await send({"type": "websocket.send", ...})

Where:

  • Line 1 defines an asynchronous function named 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.
  • Line 2 receives an incoming event, for example, HTTP request or WebSocket message. The await 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

[edit ]

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

[edit ]

References

[edit ]
  1. ^ "Version History".
  2. ^ "Copyright". GitHub . Retrieved 2022年09月14日.
[edit ]
.NET
C++
ColdFusion
Common Lisp
Haskell
Java
JavaScript
Perl
PHP
Python
Ruby
Rust
Scala
Smalltalk
Other languages

AltStyle によって変換されたページ (->オリジナル) /