マジセミドライブ

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

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

ChatGPT探訪

2024.05.07

【ChatGPT探訪】「 無限議論 」〜最強スタンド考察〜🤔

マジセミSNSに投稿した 【担当者A】の「 無限議論 」〜最強スタンド考察〜💬 を記事化したものです。 ChatGPTに課金していないみなさんにも、 AI同士の議論をお楽しみいただけます👍 ※原稿テキストを放り込むだけで、 ジョジョ風イラストを作成してしまう生成AIがすごくないですか?

【トレンド解説】米国における「 生成AI活用 」最新動向📈

トレンド解説

2024.05.07

【トレンド解説】米国における「 生成AI活用 」最新動向📈

「米国における 生成AI活用 最新動向」について解説しています。生成AIは日本企業にも多くの可能性をもたらし、「デスクワークの効率化」や「業務の自動化推進」に貢献しています。生成AIを理解し、活用することが、グローバルな競争力を高める鍵となります。