A pequena estrutura ASGI que brilha.
Documentação : https://www.starlette.io
Código fonte : https://github.com/encode/starlette
Starlette é uma estrutura/kit de ferramentas ASGI leve, ideal para construir serviços web assíncronos em Python.
Está pronto para produção e oferece o seguinte:
httpx
.asyncio
e trio
.$ pip install starlette
Você também desejará instalar um servidor ASGI, como uvicorn, daphne ou 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 )
Em seguida, execute o aplicativo usando Uvicorn:
$ uvicorn example:app
Para um exemplo mais completo, consulte encode/starlette-example.
Starlette requer apenas anyio
e os seguintes são opcionais:
httpx
- Obrigatório se você quiser usar o TestClient
.jinja2
– Obrigatório se você quiser usar Jinja2Templates
.python-multipart
- Obrigatório se você deseja oferecer suporte à análise de formulário, com request.form()
.itsdangerous
- Necessário para suporte SessionMiddleware
.pyyaml
- Necessário para suporte SchemaGenerator
. Você pode instalar tudo isso com pip install starlette[full]
.
Starlette foi projetado para ser usado como uma estrutura completa ou como um kit de ferramentas ASGI. Você pode usar qualquer um de seus componentes de forma independente.
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
Execute o app
em 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)
Execute uvicorn com --reload
para ativar o recarregamento automático em alterações de código.
A modularidade na qual o Starlette foi projetado promove a construção de componentes reutilizáveis que podem ser compartilhados entre qualquer estrutura ASGI. Isto deverá permitir um ecossistema de middleware partilhado e aplicações montáveis.
A separação clara da API também significa que é mais fácil entender cada componente isoladamente.
Starlette é um código licenciado BSD.
Projetado e fabricado com cuidado.
— ️ —