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>")
Auch in der Bibliothek
Clap für Rust: Vollständige Anleitung mit Beispielen
Arbeiten mit Excel in C# (.NET): Bibliotheken EPPlus, ClosedXML und NPOI
Abseil C++: Vollständiges Tutorial mit Code-Beispielen
Symfony/Mailer für PHP: Komplettanleitung mit Beispielen
HTTP-Client für Go (Golang): Top-Bibliotheken für die Arbeit mit HTTP