マジセミドライブ

ウェビナー関連のニュースや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

おすすめの記事

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。