WSGI inkludieren – Flask, Django und andere¶
Sie können WSGI-Anwendungen mounten, wie Sie es in Unteranwendungen – Mounts, Hinter einem Proxy gesehen haben.
Dazu können Sie die WSGIMiddleware
verwenden und damit Ihre WSGI-Anwendung wrappen, zum Beispiel Flask, Django usw.
WSGIMiddleware
verwenden¶
Sie müssen WSGIMiddleware
importieren.
Wrappen Sie dann die WSGI-Anwendung (z. B. Flask) mit der Middleware.
Und dann mounten Sie das auf einem Pfad.
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))
Es ansehen¶
Jetzt wird jede Anfrage unter dem Pfad /v1/
von der Flask-Anwendung verarbeitet.
Und der Rest wird von FastAPI gehandhabt.
Wenn Sie das mit Uvicorn ausführen und auf http://localhost:8000/v1/ gehen, sehen Sie die Response von Flask:
Hello, World from Flask!
Und wenn Sie auf http://localhost:8000/v2 gehen, sehen Sie die Response von FastAPI:
{
"message": "Hello World"
}