Incluyendo WSGI - Flask, Django, otros¶
Puedes montar aplicaciones WSGI como viste con Sub Aplicaciones - Mounts, Detrás de un Proxy.
Para eso, puedes usar WSGIMiddleware
y usarlo para envolver tu aplicación WSGI, por ejemplo, Flask, Django, etc.
Usando WSGIMiddleware
¶
Necesitas importar WSGIMiddleware
.
Luego envuelve la aplicación WSGI (p. ej., Flask) con el middleware.
Y luego móntala bajo un path.
from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
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))
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"
}