Loading article…
| バージョン | 3.0 |
|---|---|
| 開発者 | ASGI チーム |
| 発売日 | 2019-03-04 [1] |
| Webサイト | asgi.readthedocs.io/en/latest/specs/index.html |
| ライセンス | パブリックドメイン[2] |
| 状態 | 下書き |
非同期サーバー ゲートウェイ インターフェイス( ASGI ) は、 Web サーバーが非同期対応のPythonフレームワークおよびアプリケーションにリクエストを転送するための呼び出し規約です。これは、Web サーバー ゲートウェイ インターフェイス(WSGI)の後継として構築されています。
WSGI が同期Pythonアプリケーションの標準を提供したのに対し、ASGI はWSGI下位互換性実装と複数のサーバーおよびアプリケーション フレームワーク を備え、非同期アプリケーションと同期アプリケーションの両方に標準を提供します。
例
Pythonで書かれた ASGI 互換の「Hello, World! 」アプリケーション:
非同期 定義 アプリケーション(スコープ、 受信、 送信):
イベント = 受信を待機 ()
...
送信を待機します({ "type" : "websocket.send" , ... })
どこ:
- 1 行目は、 という名前の非同期関数を定義します。この関数は、 、
applicationの 3 つのパラメータ (WSGI では 2 つのみ) を受け取ります。scopereceivesendscopedictプロトコル、ヘッダーなど、現在の接続に関する詳細が含まれます。receiveこれらは非同期呼び出し可能オブジェクトであり、sendアプリケーションがクライアントとの間でメッセージを送受信できるようにします。
- 2 行目は、HTTP リクエストや WebSocket メッセージなどの受信イベントを受信します。
await操作が非同期であるため、キーワードが使用されます。 - 4 行目は、非同期的にクライアントに応答を返します。この場合、WebSocket 通信です。
Web サーバー ゲートウェイ インターフェイス (WSGI) の互換性
ASGI はWSGIのスーパーセットとしても設計されており、両者の間で変換を行う方法が定義されており、変換ラッパー (asgiref ライブラリで提供) を介して ASGI サーバー内でWSGIアプリケーションを実行できます。スレッドプールを使用すると、非同期イベント ループから離れて 同期WSGIアプリケーションを実行できます。
参照
参考文献
- ^ 「バージョン履歴」.
- ^ 「Copyright」. GitHub . 2022年9月14日閲覧。
外部リンク
- 非同期サーバーゲートウェイインターフェースのドキュメント
- 非同期サーバーゲートウェイインターフェース仕様
