マジセミドライブ

ウェビナー関連のニュースや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分用語解説】 「 ウェルビーイング 」とは?😊

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

2025.03.10

【デジタル寺田の3分用語解説】 「 ウェルビーイング 」とは?😊

「 ウェルビーイング 」とは、身体的・精神的な健康だけでなく、社会的・経済的にも満たされた状態を指します。企業にとっては、健康経営の推進により生産性向上や離職率低下などのメリットがあります。本記事では、ウェルビーイングが注目される背景や企業の具体的な取り組みについて詳しく解説します。

【デジタル寺田の3分用語解説】 「 心理的安全性 」が無い職場とは?🤐

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

2025.03.17

【デジタル寺田の3分用語解説】 「 心理的安全性 」が無い職場とは?🤐

「 心理的安全性 」が低い職場とはどのような環境なのか、具体的な特徴を解説します。「質問しづらい雰囲気」「失敗を報告できない隠蔽体質」「発言をためらう風土」など、心理的安全性の欠如がもたらす影響を詳しく紹介し、安全な職場づくりの重要性も解説します。

【デジタル寺田の3分用語解説】 「 AIエージェント 」は、人間の管理職の代わりになるか?🤖

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

2025.03.11

【デジタル寺田の3分用語解説】 「 AIエージェント 」は、人間の管理職の代わりになるか?🤖

「 AIエージェント 」は営業マネージャーの業務をどこまで代行できるのか?「データ分析」「フィードバック」「自動日程調整」の可能性を探り、未来の管理職のあり方を考察します。AIが進化する中で、人間の役割はどう変わるのか詳しく解説します。