跳转至

包含 WSGI - Flask、Django 及其他框架

你可以像在子应用 - 挂载代理后方中看到的那样挂载 WSGI 应用。

为此,你可以使用 WSGIMiddleware 来包装你的 WSGI 应用,例如 Flask、Django 等。

使用 WSGIMiddleware

你需要导入 WSGIMiddleware

然后用该中间件包装 WSGI(例如 Flask)应用。

最后将其挂载到某个路径下。

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

检查

现在,路径 /v1/ 下的每个请求将由 Flask 应用程序处理。

其余部分将由 FastAPI 处理。

如果你运行它并访问 http://localhost:8000/v1/,你将看到来自 Flask 的响应:

Hello, World from Flask!

如果你访问 http://localhost:8000/v2,你将看到来自 FastAPI 的响应:

{
    "message": "Hello World"
}