El pequeño marco ASGI que brilla.
Documentación : https://www.starlette.io
Código fuente : https://github.com/encode/starlette
Starlette es un marco/kit de herramientas ASGI liviano, ideal para crear servicios web asíncronos en Python.
Está listo para producción y le ofrece lo siguiente:
httpx
.asyncio
y trio
.$ pip install starlette
También querrás instalar un servidor ASGI, como uvicorn, daphne o 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 )
Luego ejecute la aplicación usando Uvicorn:
$ uvicorn example:app
Para ver un ejemplo más completo, consulte codificar/starlette-ejemplo.
Starlette solo requiere anyio
y lo siguiente es opcional:
httpx
: obligatorio si desea utilizar TestClient
.jinja2
: obligatorio si desea utilizar Jinja2Templates
.python-multipart
: obligatorio si desea admitir el análisis de formularios, con request.form()
.itsdangerous
: necesario para la compatibilidad SessionMiddleware
.pyyaml
: necesario para la compatibilidad SchemaGenerator
. Puede instalarlos todos con pip install starlette[full]
.
Starlette está diseñado para usarse como un marco completo o como un conjunto de herramientas ASGI. Puedes utilizar cualquiera de sus componentes de forma independiente.
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
Ejecute la app
en example.py
:
$ uvicorn example:app
INFO: Started server process [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Ejecute uvicorn con --reload
para habilitar la recarga automática en caso de cambios de código.
La modularidad en la que está diseñado Starlette promueve la construcción de componentes reutilizables que se pueden compartir entre cualquier marco ASGI. Esto debería permitir un ecosistema de middleware compartido y aplicaciones montables.
La separación limpia de API también significa que es más fácil comprender cada componente de forma aislada.
Starlette es un código con licencia BSD.
Diseñado y elaborado con cuidado.
— ️ —