Sanic – schnelles asynchrones Web-Framework für Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Sanic

Sanic ist ein modernes asynchrones Web-Framework für Python, das speziell für die Entwicklung leistungsstarker Webanwendungen konzipiert wurde. Basierend auf asyncio ermöglicht es die effiziente Verarbeitung tausender gleichzeitiger Verbindungen dank der Unterstützung von async/await-Syntax. Sanic eignet sich ideal für die Erstellung von REST-APIs, Microservices, Echtzeitanwendungen und Backends mit hoher Auslastung.

Schlüsselfunktionen von Sanic

Leistung und Architektur

Sanic wurde mit Fokus auf Geschwindigkeit entwickelt. Das Framework nutzt asyncio für die asynchrone Verarbeitung von Anfragen und erreicht damit eine Leistung, die mit Node.js und Go vergleichbar ist. Die integrierte async/await-Unterstützung macht den Code lesbarer und effizienter.

Funktionsumfang

  • Vollständige async/await-Unterstützung von Haus aus
  • Routing mit Parametern und Middleware
  • Integrierte WebSocket-Unterstützung
  • Templatesystem und Verwaltung statischer Dateien
  • Unterstützung für CORS, Cookies und Sessions
  • Einfache und übersichtliche Projektstruktur
  • Hervorragende Skalierbarkeit für API-Server

Installation und erste Schritte

Basisinstallation

pip install sanic

Zusätzliche Abhängigkeiten

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

Erste Anwendung erstellen

from sanic import Sanic
from sanic.response import text

app = Sanic("MyApp")

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

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

Routing und Anfrageverarbeitung

Basis-Routen

@app.get("/")
async def get_handler(request):
    return text("GET-Anfrage")

@app.post("/")
async def post_handler(request):
    return text("POST-Anfrage")

@app.put("/")
async def put_handler(request):
    return text("PUT-Anfrage")

@app.delete("/")
async def delete_handler(request):
    return text("DELETE-Anfrage")

Asynchrone Routen

import asyncio

@app.get("/async")
async def async_route(request):
    await asyncio.sleep(1)  # Simulation einer asynchronen Operation
    return text("Asynchrone Antwort")

Arbeiten mit Parametern und Daten

Routen-Parameter

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

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

Query-Parameter

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

JSON- und Formulardaten verarbeiten

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

Antworttypen

Verschiedene Antwortformate

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

@app.get("/text")
async def text_response(request):
    return text("Einfacher Text")

@app.get("/json")
async def json_response(request):
    return json({"message": "JSON-Antwort"})

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

Empfehlungen