OSS探訪GitHubでログイン

ASGIの小さな部品を組み合わせて非同期Webサービスを構築するPythonフレームワーク

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

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

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

概要

StarletteはPython向けの軽量なASGIフレームワーク/ツールキットです。HTTPルーティング、WebSocket、バックグラウンドタスク、起動・終了処理、CORS、GZip、静的ファイル、ストリーミング応答、セッションなどを小さな部品として提供し、非同期Webサービスを構成できます。

特徴と向いている用途

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

主な特徴

HTTP・WebSocket・ミドルウェアを必要な粒度で組み合わせる

ルーティング、HTTP応答、WebSocket、バックグラウンドタスク、CORS、GZip、静的ファイル、ストリーミング応答、セッションなどを個別の部品として利用できます。完成済みの枠組みとして使うだけでなく、ASGIツールキットとして必要な部品だけを取り込めます。

出典:[2]

必須依存をAnyIO中心に抑え、必要な機能だけ追加する

1.7.0の必須依存はAnyIO 4系が中心です。TestClient、Jinja2テンプレート、OpenTelemetry、フォーム解析、セッション、Schema生成などは用途に応じた追加依存として選べます。

出典:[2][3]

向いている用途

非同期APIや再利用可能なASGI部品を小さく構成したいバックエンドに向く

大きなフルスタック構成より、HTTP・WebSocket・ミドルウェアなどの境界を明示しながら非同期サービスを組み立てたい場合に向きます。ASGIの部品を他のアプリやミドルウェアと共有したい構成にも適します。

出典:[2]

導入前の確認

Python 3.10以上・AnyIO 4を前提にし、実験的なOpenTelemetry機能は互換性を固定しない

Starlette 1.7.0はPython 3.10以上とAnyIO 4系を要求します。1.7.0で追加されたOpenTelemetryMiddlewareは実験的機能で、minor releaseでもAPIや出力telemetryが変更される可能性が明記されています。監視基盤へ組み込む場合はversion固定と回帰確認が必要です。

出典:[3][4]

参考にした公式資料

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

フルスタック機能を一式で抱えるより、ASGIのHTTP・WebSocket・ミドルウェアを必要な粒度で組み合わせたい場合に向きます。依存が少ないぶん、データベースや認証など周辺機能の選定はアプリ側で明示的に行います。

3ステップで試す

  1. 1

    Starlette 1.7.0とUvicornを導入する

    確認対象のStarletteと、READMEで案内されているASGI serverをversion固定で導入します。Python 3.10以上が必要です。

    python -m pip install "starlette==1.7.0" "uvicorn==0.54.0"
  2. 2

    最小のStarletteアプリを作る

    公式READMEのrouting例を最小構成にしてmain.pyへ保存します。

    cat > main.py <<'PY' from starlette.applications import Starlette from starlette.responses import JSONResponse from starlette.routing import Route async def homepage(request): return JSONResponse({'hello': 'world'}) app = Starlette(routes=[Route('/', homepage)]) PY
  3. 3

    ASGI serverで起動する

    Uvicornで起動し、別端末またはブラウザからhttp://127.0.0.1:8000/へアクセスしてJSON responseを確認します。

    uvicorn main:app
公式READMEで確認

成長

成長の推移 · 直近30日

12,655 Stars

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

Built with

カテゴリとタグ

GitHubデータ

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

GitHub Topics

  • asgi
  • async
  • http
  • python
  • websockets
Stars
12,655
Forks
1,361
Watchers
100
Open Issues
58
Contributors
340
所有者種別
User
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/05

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

情報の誤りを報告

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

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