Inclure WSGI - Flask, Django, autres¶
🌐 Traduction par IA et humains
Cette traduction a été réalisée par une IA guidée par des humains. 🤝
Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
Vous pouvez monter des applications WSGI comme vous l'avez vu avec Sous-applications - Montages, Derrière un proxy.
Pour cela, vous pouvez utiliser WSGIMiddleware et l'utiliser pour envelopper votre application WSGI, par exemple Flask, Django, etc.
Utiliser WSGIMiddleware¶
Remarque
Cela nécessite d'ajouter a2wsgi à votre projet, par exemple avec uv add a2wsgi.
Vous devez importer WSGIMiddleware depuis a2wsgi.
Ensuite, enveloppez l'application WSGI (par ex. Flask) avec le middleware.
Puis, montez-la sous un chemin.
from a2wsgi import WSGIMiddleware
from fastapi import FastAPI
from flask import Flask, request
from markupsafe import escape
flask_app = Flask(__name__)
@flask_app.route("/")
def flask_main():
name = request.args.get("name", "World")
return f"Hello, {escape(name)} from Flask!"
app = FastAPI()
@app.get("/v2")
def read_main():
return {"message": "Hello World"}
app.mount("/v1", WSGIMiddleware(flask_app))
Remarque
Auparavant, il était recommandé d'utiliser WSGIMiddleware depuis fastapi.middleware.wsgi, mais il est désormais déprécié.
Il est conseillé d'utiliser le package a2wsgi à la place. L'utilisation reste la même.
Vous devez simplement vous assurer que le package a2wsgi est installé et importer WSGIMiddleware correctement depuis a2wsgi.
Vérifiez¶
Désormais, chaque requête sous le chemin /v1/ sera gérée par l'application Flask.
Et le reste sera géré par FastAPI.
Si vous l'exécutez et allez à http://localhost:8000/v1/ vous verrez la réponse de Flask :
Hello, World from Flask!
Et si vous allez à http://localhost:8000/v2 vous verrez la réponse de FastAPI :
{
"message": "Hello World"
}