マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2023.05.18
【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」
コンテンツ
【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」
Uvicornの「概要」
「Uvicorn」(ユビコーン)とは、Python用の「ASGI Webサーバ」実装です。
非同期フレームワーク用の低レベル「サーバ/アプリケーション インターフェース」を提供します。
Uvicornは「HTTP/1.1」+「WebSocket」をサポートします。
「ASGI」とは
「WSGI」の精神的な後継
・Web Server Gateway Interface
・「同期Pythonアプリ」の標準を提供
・問題点=長時間ポーリングなどの存続期間の長い接続は許可されない
「ASGI」のポイント
・Asynchronous Server Gateway Interface
・非同期サーバゲートウェイインターフェース
・目的=非同期対応の「Python Webサーバ」「フレームワーク」「アプリケーション間標準インターフェース」の提供
・WSGI下位互換性の実装標準を提供
「ASGI」のメリット
・「軽量バックグラウンドタスク」「遅いHTTPリクエスト処理」などもサポート可能
・ネットワーク I/O で長時間ブロックされるエンドポイントの制限要因を縮小化
・「Webサーバ実装」を「アプリケーションフレームワーク」から分離
・「Webサーバ」と「アプリケーションフレームワーク」の相互運用エコシステムが可能となる
Uvicornの「特徴」
堅牢なサーバ実装を提供
・「接続」と「リソース管理」について特に注意を払って設計されている
・目的=「クライアントの不適切な動作対応」「サービス拒否攻撃に対する復元力の確保」
ASGIインターフェース
■Uvicornはアプリケーションとの対話に「ASGI仕様」を利用
■アプリケーションは「3つの引数を取る非同期呼び出し可能オブジェクト」を公開する必要がある
・「scope」 :着信接続に関する情報
・「receive」 :サーバからの受信メッセージを受信するチャネル
・「send」 :サーバに送信メッセージを送信するチャネル
サーバおよびプロセスマネージャー「Gunicorn」との連携
■Uvicornには「Gunicornワーカークラス」が含まれている
・実稼働デプロイメントの場合は「Gunicorn」の使用を推奨している
■「Gunicornのプロセス管理機能」を利用できる
・ワーカープロセスの数をオンザフライで増減
・ワーカープロセスの再起動
・ダウンタイムなしでサーバアップグレード実行
Uvicornの「ASGIフレームワーク実行」
Uvicornを使用して、任意の「ASGIフレームワーク」を実行できます。
小規模サービスの場合は、ASGIアプリケーションを直接作成することも可能です。
軽量ASGIフレームワーク「Starlette」
・ハイパフォーマンス
・並行処理コード実行サービスの構築に適している
・「HTTP」+「WebSocket」の両方をサポート
→github.com →encode →starlette
DjangoのネイティブASGIサポート「Django Channels」
・「スレッド フレームワーク バックエンド」に「非同期フロントエンド」を提供
・アプリケーションコードを標準スレッドコンテキストで実行しながら、「WebSocket」「バックグラウンド タスク」「長時間実行される接続」をサポート
高速Python Webマイクロフレームワーク「Quart」
・FlaskマイクロフレームワークAPIの「asyncio」再実装
・JSON APIを作成
・HTMLをレンダリングして提供
・チャットなどの WebSocket を提供
・ビデオ配信などのストリーム応答
PythonAPI構築Webフレームワーク「FastAPI」
・「Starlette」と「Pydantic」に基づくAPIフレームワーク
・API関数パラメータを記述
・自動データ変換
・データ検証
・OpenAPIスキーマ
・JSONスキーマ
・インタラクティブなAPIドキュメントUIを取得
→github.com →tiangolo →fastapi
非同期Webフレームワーク「BlackSheep」
・「Flask」と「ASP.NET Core」からインスピレーション
・依存関係挿入の組み込みサポート
・パラメータ自動バインド :リクエストハンドラーの型アノテーション
・「OpenAPI ドキュメント」および「Swagger UI」の自動生成
ミニマリストPython Web API フレームワーク「Falcon」
・Python用の最小限の「REST/アプリ」バックエンドフレームワーク
・大規模な信頼性
・正確性
・パフォーマンス
Python3用の非同期ASGI Web フレームワーク「Muffin」
・競争力のあるパフォーマンス
・非同期Pythonライブラリのサポート :「Asyncio」「Trio」「Curio」
・HTTP応答を送信
・WebSocketサポート
・サーバサイドイベントのサポート
Uvicornの「オフィシャルサイト情報」
オフィシャルサイト
GitHubページ
主要開発元
Uvicornは「Uvicorn開発コミュニティ」が中心となり開発が進められています。
→github.com →encode →uvicorn →graphs →contributors
ライセンス情報
Uvicornのライセンスは「BSD 3-Clause “New” or “Revised” License」です。
詳細について、こちらを参照ください。
→github.com →encode →uvicorn →LICENSE
動作環境
・Python 3.7+
導入方法
【お知らせ】ITセミナー「マジセミ」のご紹介
「 マジセミ 」では、日々、多くのIT関連セミナーを開催しています。
参加者のみなさまのために「本当に役立つ情報の提供」を目標としています。
また、「 マジセミ 」を通じて、デジタル関連プロダクト(サービス)との「新たな出会いの場」「新たな体験の場」を創造することで、「IT業界の発展」「製造業の発展」「エンジニアの活躍促進」の実現を目指しています。
多くのセミナーの中から「ご自身のスキルやビジネスを強化できるセミナー」を見つけて、ぜひ一度、ご参加ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク2位🏆
【AIツール実験室】楽曲作成ツール「 Suno AI 」〜AI生成ミュージックフェス〜 - 🏆ランク3位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク4位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク5位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク6位🏆
【無料で使える】「 マルウェア 」対策ツールまとめ - 🏆ランク7位🏆
【OSS情報】ディスクイメージング(クローニング)ツール「 Clonezilla 」 - 🏆ランク8位🏆
【AIツール実験室】画像生成AIツール「 Emi 」(前編) - 🏆ランク9位🏆
【OSS情報アーカイブ】FreeBSD - 🏆ランク10位🏆
【無料で使える】「 RPA 」ツールまとめ