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