包含 WSGI - Flask,Django,其它¶
您可以挂载多个 WSGI 应用,正如您在 Sub Applications - Mounts, Behind a Proxy 中所看到的那样。
为此, 您可以使用 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 处理。
如果您使用 Uvicorn 运行应用实例并且访问 http://localhost:8000/v1/,您将会看到由 Flask 返回的响应:
Hello, World from Flask!
并且如果您访问 http://localhost:8000/v2,您将会看到由 FastAPI 返回的响应:
{
"message": "Hello World"
}