輝く小さな ASGI フレームワーク。
ドキュメント: https://www.starlette.io
ソースコード: https://github.com/encode/starlette
Starlette は、Python で非同期 Web サービスを構築するのに最適な軽量の ASGI フレームワーク/ツールキットです。
これは本番環境に対応しており、次の機能を提供します。
httpx
上に構築されたテスト クライアント。asyncio
およびtrio
バックエンドと互換性があります。$ pip install starlette
uvicorn、daphne、hypercorn などの ASGI サーバーをインストールすることもできます。
$ pip install uvicorn
from starlette . applications import Starlette
from starlette . responses import JSONResponse
from starlette . routing import Route
async def homepage ( request ):
return JSONResponse ({ 'hello' : 'world' })
routes = [
Route ( "/" , endpoint = homepage )
]
app = Starlette ( debug = True , routes = routes )
次に、Uvicorn を使用してアプリケーションを実行します。
$ uvicorn example:app
より完全な例については、encode/starlette-example を参照してください。
Starlette にはanyio
のみが必要で、以下はオプションです。
httpx
- TestClient
を使用する場合は必須。jinja2
- Jinja2Templates
を使用する場合は必須。python-multipart
- request.form()
を使用したフォーム解析をサポートする場合に必要です。itsdangerous
- SessionMiddleware
サポートに必要です。pyyaml
- SchemaGenerator
サポートに必要です。これらはすべてpip install starlette[full]
でインストールできます。
Starlette は、完全なフレームワークとして、または ASGI ツールキットとして使用できるように設計されています。どのコンポーネントも独立して使用できます。
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
example.py
でapp
アプリケーションを実行します。
$ uvicorn example:app
INFO: Started server process [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
--reload
を指定して uvicorn を実行し、コード変更時の自動再ロードを有効にします。
Starlette が設計されているモジュール性により、ASGI フレームワーク間で共有できる再利用可能なコンポーネントの構築が促進されます。これにより、共有ミドルウェアとマウント可能なアプリケーションのエコシステムが可能になるはずです。
API が明確に分離されているということは、各コンポーネントを個別に理解することが容易であることも意味します。
Starlette は BSD ライセンスコードです。
慎重にデザインされ、作られています。
— ️ —