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()

Sources