OSS探訪GitHubでログイン

ASGIアプリをHTTP/1.1・HTTP/2・WebSocketで配信するPython Webサーバー

OSS規模スコア 267.1OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
11,009
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

UvicornはPython向けのASGI Webサーバーです。ASGIによりアプリケーションとサーバーを分離し、非同期フレームワークをHTTP/1.1、WebSocket、必要に応じて実験的なHTTP/2で配信できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

ASGIアプリをフレームワークから独立したサーバーとして起動する

module:app形式でASGIアプリを読み込み、HTTP/1.1とWebSocketを配信できます。ASGIがサーバーとアプリケーションの境界を定義するため、StarletteやFastAPIなどの非同期アプリを同じサーバー実装へ接続できます。

出典:[2]

standard extraで高速I/O・reload・WebSocketなどの実用機能をまとめて追加する

uvicorn[standard]は利用可能な環境でuvloopとhttptoolsを使い、WebSocket、watchfilesによるreload、.env読込、YAML形式のlog設定などの追加依存を導入します。最小構成と運用向け構成を用途に応じて選べます。

出典:[2][3]

向いている用途

非同期Python APIをフレームワークとサーバーで分離して運用したい構成に向く

ASGI対応フレームワークを独立したWebサーバーで起動し、開発時のreloadや本番のプロセス構成をアプリケーションコードから分離したいバックエンドに適します。

出典:[2]

導入前の確認

Python 3.10以上を使い、HTTP/2は実験的なopt-in機能として扱う

Uvicorn 0.54.0はPython 3.10以上を要求します。HTTP/2はzttpを追加し--http zttp --http2で有効化する実験的機能で、0.54.0時点ではupgrade方式のh2cとHTTP/2上のWebSocketは未対応です。HTTP/2を採用する場合はprotocol条件を固定して検証してください。

出典:[3][4]

参考にした公式資料

  1. [1]Kludex/uvicorn — GitHub repository(2026-10-06)
  2. [2]Uvicorn 0.54.0 — README(2026-10-06)
  3. [3]Uvicorn 0.54.0 — pyproject.toml(2026-10-06)
  4. [4]Uvicorn 0.54.0 release(2026-10-06)
  5. [5]Uvicorn BSD-3-Clause license(2026-10-06)
編集部からの補足

ASGIフレームワークとWebサーバーを分離して選べる点が導入判断の中心です。standard extraは便利ですが、不要なreload・WebSocket・設定系依存まで含める必要があるかは本番構成に合わせて決めてください。

3ステップで試す

  1. 1

    Uvicorn 0.54.0を導入する

    READMEのstandard extraをversion固定で導入します。Python 3.10以上が必要です。

    python -m pip install "uvicorn[standard]==0.54.0"
  2. 2

    最小のASGIアプリを作る

    公式READMEのQuickstartにある最小ASGI applicationをexample.pyへ保存します。

    cat > example.py <<'PY' async def app(scope, receive, send): assert scope['type'] == 'http' await send({'type': 'http.response.start', 'status': 200, 'headers': [(b'content-type', b'text/plain')]}) await send({'type': 'http.response.body', 'body': b'Hello, world!'}) PY
  3. 3

    Uvicornで配信する

    serverを起動し、別端末またはブラウザからhttp://127.0.0.1:8000/へアクセスしてHello, world!を確認します。

    uvicorn example:app
公式READMEで確認

成長

成長の推移 · 直近30日

11,009 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • asgi
  • asyncio
  • http
  • http-server
  • python
Stars
11,009
Forks
1,056
Watchers
95
Open Issues
112
Contributors
210
所有者種別
User
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?