包含 WSGI - Flask,Django,其它¶
您可以挂载 WSGI 应用,正如您在子应用 - 挂载、在代理之后 中所看到的那样。
为此, 您可以使用WSGIMiddleware 来包装你的 WSGI 应用,如:Flask,Django,等等。
使用WSGIMiddleware¶
信息
需要安装a2wsgi,例如使用pip install a2wsgi。
您需要从a2wsgi 导入WSGIMiddleware。
然后使用该中间件包装 WSGI 应用(例如 Flask)。
之后将其挂载到某一个路径下。
froma2wsgiimportWSGIMiddlewarefromfastapiimportFastAPIfromflaskimportFlask,requestfrommarkupsafeimportescapeflask_app=Flask(__name__)@flask_app.route("/")defflask_main():name=request.args.get("name","World")returnf"Hello,{escape(name)} from Flask!"app=FastAPI()@app.get("/v2")defread_main():return{"message":"Hello World"}app.mount("/v1",WSGIMiddleware(flask_app))注意
之前推荐使用fastapi.middleware.wsgi 中的WSGIMiddleware,但它现在已被弃用。
建议改用a2wsgi 包,使用方式保持不变。
只要确保已安装a2wsgi 包,并且从a2wsgi 正确导入WSGIMiddleware 即可。
检查¶
现在,所有定义在/v1/ 路径下的请求将会被 Flask 应用处理。
其余的请求则会被FastAPI 处理。
如果你运行它并访问http://localhost:8000/v1/,你将会看到由 Flask 返回的响应:
Hello, World from Flask!如果你访问http://localhost:8000/v2,你将会看到由 FastAPI 返回的响应:
{"message":"Hello World"}






