包含 WSGI:Flask、Django 等¶
你可以像在 子應用程式 - 掛載、在 Proxy 後方 中所見那樣掛載 WSGI 應用。
為此,你可以使用 WSGIMiddleware 來包住你的 WSGI 應用,例如 Flask、Django 等。
使用 WSGIMiddleware¶
Info
這需要先安裝 a2wsgi,例如使用 pip install a2wsgi。
你需要從 a2wsgi 匯入 WSGIMiddleware。
然後用該 middleware 包住 WSGI(例如 Flask)應用。
接著把它掛載到某個路徑下。
from a2wsgi import WSGIMiddleware
from fastapi import FastAPI
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))
Note
先前建議使用來自 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"
}