Sanic : Framework Web Asynchrone Rapide pour Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à Sanic

Sanic est un framework web asynchrone moderne pour Python, conçu pour créer des applications web haute performance. Basé sur asyncio, il permet de gérer efficacement des milliers de connexions simultanées grâce à la syntaxe async/await. Sanic est idéal pour développer des API REST, des microservices, des applications en temps réel et des backends à forte charge.

Fonctionnalités clés de Sanic

Performances et architecture

Sanic est construit avec un accent sur la rapidité d'exécution. Le framework utilise asyncio pour le traitement asynchrone des requêtes, offrant des performances comparables à Node.js et Go. La prise en charge native d'async/await rend le code plus lisible et efficace.

Capacités fonctionnelles

  • Prise en charge complète d'async/await dès le départ
  • Routage avec paramètres et middleware
  • Support intégré de WebSocket
  • Système de templates et gestion des fichiers statiques
  • Support de CORS, cookies et sessions
  • Structure de projet simple et claire
  • Excellente scalabilité pour les serveurs API

Installation et configuration initiale

Installation de base

pip install sanic

Dépendances supplémentaires

pip install sanic[ext]  # Extensions
pip install jinja2 aiofiles python-dotenv

Création de votre première application

from sanic import Sanic
from sanic.response import text

app = Sanic("MyApp")

@app.get("/")
async def index(request):
    return text("Bonjour de Sanic")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

Routage et traitement des requêtes

Routes de base

@app.get("/")
async def get_handler(request):
    return text("Requête GET")

@app.post("/")
async def post_handler(request):
    return text("Requête POST")

@app.put("/")
async def put_handler(request):
    return text("Requête PUT")

@app.delete("/")
async def delete_handler(request):
    return text("Requête DELETE")

Routes asynchrones

import asyncio

@app.get("/async")
async def async_route(request):
    await asyncio.sleep(1)  # Simulation d'une opération asynchrone
    return text("Réponse asynchrone")

Gestion des paramètres et des données

Paramètres de route

@app.get("/user/<user_id:int>")
async def get_user(request, user_id):
    return text(f"ID utilisateur : {user_id}")

@app.get("/profile/<username:str>")
async def get_profile(request, username):
    return text(f"Profil : {username}")

Paramètres de requête (query)

@app.get("/search")
async def search(request):
    query = request.args.get("q", "rien")
    limit = request.args.get("limit", "10")
    return text(f"Recherche : {query}, limite : {limit}")

Traitement des JSON et formulaires

from sanic.response import json

@app.post("/api/data")
async def receive_data(request):
    data = request.json
    return json({"received": data})

@app.post("/form")
async def handle_form(request):
    username = request.form.get("username")
    email = request.form.get("email")
    return json({"username": username, "email": email})

Types de réponses

Différents formats de réponse

from sanic.response import text, json, html, redirect, file

@app.get("/text")
async def text_response(request):
    return text("Texte simple")

@app.get("/json")
async def json_response(request):
    return json({"message": "Réponse JSON"})

@app.get("/html")
async def html_response(request):
    return html("<h1>Page HTML                    

Recommendations