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