マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2023.05.18

【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」

【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」

【OSS情報】Python用ASGI Webサーバ実装「 Uvicorn 」

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.readthedocs.io

「ASGI」のメリット

・「軽量バックグラウンドタスク」「遅いHTTPリクエスト処理」などもサポート可能
・ネットワーク I/O で長時間ブロックされるエンドポイントの制限要因を縮小化
・「Webサーバ実装」を「アプリケーションフレームワーク」から分離
・「Webサーバ」と「アプリケーションフレームワーク」の相互運用エコシステムが可能となる

Uvicornの「特徴」

堅牢なサーバ実装を提供

・「接続」と「リソース管理」について特に注意を払って設計されている
・目的=「クライアントの不適切な動作対応」「サービス拒否攻撃に対する復元力の確保」

→uvicorn.org →server-behavior

ASGIインターフェース

■Uvicornはアプリケーションとの対話に「ASGI仕様」を利用

■アプリケーションは「3つの引数を取る非同期呼び出し可能オブジェクト」を公開する必要がある
・「scope」 :着信接続に関する情報
・「receive」 :サーバからの受信メッセージを受信するチャネル
・「send」 :サーバに送信メッセージを送信するチャネル

サーバおよびプロセスマネージャー「Gunicorn」との連携

■Uvicornには「Gunicornワーカークラス」が含まれている
・実稼働デプロイメントの場合は「Gunicorn」の使用を推奨している

■「Gunicornのプロセス管理機能」を利用できる
・ワーカープロセスの数をオンザフライで増減
・ワーカープロセスの再起動
・ダウンタイムなしでサーバアップグレード実行

→gunicorn.org

Uvicornの「ASGIフレームワーク実行」

Uvicornを使用して、任意の「ASGIフレームワーク」を実行できます。

小規模サービスの場合は、ASGIアプリケーションを直接作成することも可能です。

軽量ASGIフレームワーク「Starlette」

・ハイパフォーマンス
・並行処理コード実行サービスの構築に適している
・「HTTP」+「WebSocket」の両方をサポート

→github.com →encode →starlette

DjangoのネイティブASGIサポート「Django Channels」

・「スレッド フレームワーク バックエンド」に「非同期フロントエンド」を提供
・アプリケーションコードを標準スレッドコンテキストで実行しながら、「WebSocket」「バックグラウンド タスク」「長時間実行される接続」をサポート

→channels.readthedocs.io

高速Python Webマイクロフレームワーク「Quart」

・FlaskマイクロフレームワークAPIの「asyncio」再実装
・JSON APIを作成
・HTMLをレンダリングして提供
・チャットなどの WebSocket を提供
・ビデオ配信などのストリーム応答

→pgjones.gitlab.io →quart

PythonAPI構築Webフレームワーク「FastAPI」

・「Starlette」と「Pydantic」に基づくAPIフレームワーク
・API関数パラメータを記述
・自動データ変換
・データ検証
・OpenAPIスキーマ
・JSONスキーマ
・インタラクティブなAPIドキュメントUIを取得

→github.com →tiangolo →fastapi

非同期Webフレームワーク「BlackSheep」

・「Flask」と「ASP.NET Core」からインスピレーション
・依存関係挿入の組み込みサポート
・パラメータ自動バインド :リクエストハンドラーの型アノテーション
・「OpenAPI ドキュメント」および「Swagger UI」の自動生成

→neoteroi.dev →blacksheep

ミニマリストPython Web API フレームワーク「Falcon」

・Python用の最小限の「REST/アプリ」バックエンドフレームワーク
・大規模な信頼性
・正確性
・パフォーマンス

→falconframework.org

Python3用の非同期ASGI Web フレームワーク「Muffin」

・競争力のあるパフォーマンス
・非同期Pythonライブラリのサポート :「Asyncio」「Trio」「Curio」
・HTTP応答を送信
・WebSocketサポート
・サーバサイドイベントのサポート

→github.com →klen →muffin

Uvicornの「オフィシャルサイト情報」

オフィシャルサイト

→uvicorn.org

GitHubページ

→github.com →encode →uvicorn

主要開発元

Uvicornは「Uvicorn開発コミュニティ」が中心となり開発が進められています。

→github.com →encode →uvicorn →graphs →contributors

ライセンス情報

Uvicornのライセンスは「BSD 3-Clause “New” or “Revised” License」です。

詳細について、こちらを参照ください。

→github.com →encode →uvicorn →LICENSE

動作環境

・Python 3.7+

導入方法

→uvicorn.org →deployment

【お知らせ】ITセミナー「マジセミ」のご紹介

「 マジセミ 」では、日々、多くのIT関連セミナーを開催しています。

参加者のみなさまのために「本当に役立つ情報の提供」を目標としています。

また、「 マジセミ 」を通じて、デジタル関連プロダクト(サービス)との「新たな出会いの場」「新たな体験の場」を創造することで、「IT業界の発展」「製造業の発展」「エンジニアの活躍促進」の実現を目指しています。

多くのセミナーの中から「ご自身のスキルやビジネスを強化できるセミナー」を見つけて、ぜひ一度、ご参加ください。

マジセミのイメージロゴ

参考サイト
→github.com →encode →uvicorn
→uvicorn.org

おすすめの記事

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。