Vue d'ensemble

Uvicorn 0.14, publié le 1er juin 2021, ajoute la configuration de la taille maximale des messages WebSocket et le support des flux asyncio pour le transport HTTP.

Fonctionnalités principales

Taille max WebSocket

Le paramètre --ws-max-size permet de limiter la taille des messages WebSocket reçus, protégeant le serveur contre les messages excessivement volumineux.

python
# Lancement avec limite WebSocket à 1 Mo
# uvicorn app:app --ws-max-size 1048576

import uvicorn

uvicorn.run(
    'app:app',
    ws_max_size=1_048_576,  # 1 Mo
    host='0.0.0.0',
    port=8000,
)

Flux asyncio

Le transport HTTP peut utiliser les flux asyncio (asyncio.streams), offrant une alternative au transport bas niveau pour certains cas d'usage.

python
# Application ASGI minimale
async def app(scope, receive, send):
    if scope['type'] == 'http':
        await send({'type': 'http.response.start',
                    'status': 200,
                    'headers': [[b'content-type', b'text/plain']]})
        await send({'type': 'http.response.body',
                    'body': b'Hello from Uvicorn 0.14'})

Sources