跳转至

包含 WSGI - Flask、Django 等

FastAPI 中挂载 WSGI 应用,要参照子应用 - 挂载使用代理两章的内容。

挂载 WSGI 应用要使用 WSGIMiddleware,并用它打包 Flask、Django 等 WSGI 应用。

使用 WSGIMiddleware

导入 WSGIMiddleware

使用中间件打包 Flask 等 WSGI 应用。

然后,在路径下挂载该应用。

from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from flask import Flask, escape, request

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

查看文档

现在,就能用 Flask 应用处理 /v1/ 路径下的每个请求。

其余的事情则由 FastAPI 处理。

运行 Uvicorn 并打开 http://localhost:8000/v1/,查看来自 Flask 的响应:

Hello, World from Flask!

打开 http://localhost:8000/v2,查看来自 FastAPI 的响应:

{
    "message": "Hello World"
}