Overview
Starlette 0.15, released on June 23, 2021, adds Trio/AnyIO support and a context manager for WebSocket connections.
Main Features
Trio/AnyIO support
Starlette can run with anyio as an abstraction layer, allowing Trio usage alongside asyncio.
python
from starlette.applications import Starlette
from starlette.responses import PlainTextResponse
from starlette.routing import Route
async def homepage(request):
return PlainTextResponse('Hello')
app = Starlette(routes=[
Route('/', homepage),
])
# Works with asyncio or trio via anyio
WebSocket context
A context manager simplifies WebSocket connection lifecycle management.
python
from starlette.websockets import WebSocket
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
try:
while True:
data = await websocket.receive_text()
await websocket.send_text(f'Echo: {data}')
except Exception:
await websocket.close()
