Saltar a contenido

Incluyendo WSGI - Flask, Django, otros

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

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

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