Vue d'ensemble

Uvicorn 0.35, publie le 28 juin 2025, introduit WebSocketsSansIOProtocol pour une gestion plus performante des WebSockets.

Fonctionnalites principales

WebSocketsSansIOProtocol

Le nouveau protocole sans I/O pour les WebSockets separe la logique du protocole des operations d'I/O, ameliorant les performances et la testabilite.

python
# Lancer avec le nouveau protocole WebSocket
# uvicorn app:app --ws wsproto

from starlette.applications import Starlette
from starlette.websockets import WebSocket
from starlette.routing import WebSocketRoute

async def ws(websocket: WebSocket):
    await websocket.accept()
    data = await websocket.receive_text()
    await websocket.send_text(f'Echo: {data}')

app = Starlette(routes=[WebSocketRoute('/ws', ws)])

Ameliorations du serveur

Le serveur beneficie d'ameliorations de performance pour le traitement des connexions HTTP/1.1 et d'une meilleure gestion du graceful shutdown.

python
import uvicorn

async def app(scope, receive, send):
    await send({'type': 'http.response.start',
                'status': 200,
                'headers': [[b'content-type', b'text/plain']]})
    await send({'type': 'http.response.body',
                'body': b'Hello Uvicorn 0.35'})

# uvicorn app:app --host 0.0.0.0 --port 8000

Sources