Aller au contenu

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.

Version anglaise

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