Das kleine ASGI-Framework, das glänzt.
Dokumentation : https://www.starlette.io
Quellcode : https://github.com/encode/starlette
Starlette ist ein leichtes ASGI-Framework/Toolkit, das sich ideal zum Erstellen asynchroner Webdienste in Python eignet.
Es ist produktionsbereit und bietet Ihnen Folgendes:
httpx
basiert.asyncio
und trio
-Backends.$ pip install starlette
Sie sollten auch einen ASGI-Server installieren, z. B. Uvicorn, Daphne oder Hypercorn.
$ 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 )
Führen Sie dann die Anwendung mit Uvicorn aus:
$ uvicorn example:app
Ein vollständigeres Beispiel finden Sie unter encode/starlette-example.
Starlette erfordert nur anyio
und Folgendes ist optional:
httpx
– Erforderlich, wenn Sie den TestClient
verwenden möchten.jinja2
– Erforderlich, wenn Sie Jinja2Templates
verwenden möchten.python-multipart
– Erforderlich, wenn Sie das Parsen von Formularen mit request.form()
unterstützen möchten.itsdangerous
– Erforderlich für SessionMiddleware
Unterstützung.pyyaml
– Erforderlich für SchemaGenerator
Unterstützung. Sie können all dies mit pip install starlette[full]
installieren.
Starlette kann entweder als vollständiges Framework oder als ASGI-Toolkit verwendet werden. Sie können jede seiner Komponenten unabhängig voneinander verwenden.
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
Führen Sie die app
Anwendung in example.py
aus:
$ uvicorn example:app
INFO: Started server process [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Führen Sie uvicorn mit --reload
aus, um das automatische Neuladen bei Codeänderungen zu aktivieren.
Die Modularität, auf der Starlette basiert, fördert die Erstellung wiederverwendbarer Komponenten, die von jedem ASGI-Framework gemeinsam genutzt werden können. Dies soll ein Ökosystem aus gemeinsam genutzter Middleware und mountbaren Anwendungen ermöglichen.
Die saubere API-Trennung bedeutet auch, dass es einfacher ist, jede Komponente einzeln zu verstehen.
Starlette ist BSD-lizenzierter Code.
Mit Sorgfalt entworfen und gefertigt.
— ️ —