Vue d'ensemble
Sanic 21.3, publié le 15 mars 2021, introduit l'API Signals pour la communication événementielle et améliore le nommage des routes.
Fonctionnalités principales
API Signals
L'API Signals permet d'émettre et d'écouter des événements personnalisés dans le cycle de vie de l'application. C'est utile pour découpler la logique métier des handlers de route.
python
from sanic import Sanic
from sanic.response import json
app = Sanic('MonApp')
# Écouter un signal personnalisé
@app.signal('commande.creee')
async def on_commande(commande_id: str, **kwargs):
print(f'Commande {commande_id} créée')
@app.post('/commandes')
async def creer_commande(request):
commande_id = '12345'
# Émettre le signal
await app.dispatch('commande.creee', commande_id=commande_id)
return json({'id': commande_id})
Nommage des routes
Le système de nommage des routes est amélioré : chaque route peut être nommée explicitement et référencée via app.url_for() pour générer des URL de manière fiable.
python
from sanic import Sanic
from sanic.response import json, redirect
app = Sanic('MonApp')
@app.get('/utilisateurs/<uid:int>', name='profil_utilisateur')
async def profil(request, uid):
return json({'id': uid, 'nom': 'Alice'})
@app.get('/rediriger/<uid:int>')
async def rediriger(request, uid):
url = app.url_for('profil_utilisateur', uid=uid)
return redirect(url)
