Incluyendo WSGI - Flask, Django, otros¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducción ayudándonos a guiar mejor al LLM de IA.
Puedes montar aplicaciones WSGI como viste con Sub Aplicaciones - Mounts, Detrás de un Proxy.
Para eso, puedes usar el WSGIMiddleware y usarlo para envolver tu aplicación WSGI, por ejemplo, Flask, Django, etc.
Usando WSGIMiddleware¶
Información
Esto requiere instalar a2wsgi, por ejemplo con pip install a2wsgi.
Necesitas importar WSGIMiddleware de a2wsgi.
Luego envuelve la aplicación WSGI (p. ej., Flask) con el middleware.
Y luego móntala bajo un path.
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))
🤓 Other versions and variants
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))
Nota
Anteriormente, se recomendaba usar WSGIMiddleware de fastapi.middleware.wsgi, pero ahora está deprecado.
Se aconseja usar el paquete a2wsgi en su lugar. El uso sigue siendo el mismo.
Solo asegúrate de tener instalado el paquete a2wsgi e importar WSGIMiddleware correctamente desde a2wsgi.
Revisa¶
Ahora, cada request bajo el path /v1/ será manejado por la aplicación Flask.
Y el resto será manejado por FastAPI.
Si lo ejecutas y vas a http://localhost:8000/v1/ verás el response de Flask:
Hello, World from Flask!
Y si vas a http://localhost:8000/v2 verás el response de FastAPI:
{
"message": "Hello World"
}