Zum Inhalt

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