跳转至

包含 WSGI - Flask,Django,其它

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

您可以挂载 WSGI 应用,正如您在 子应用 - 挂载在代理之后 中所看到的那样。

为此, 您可以使用 WSGIMiddleware 来包装你的 WSGI 应用,如:Flask,Django,等等。

使用 WSGIMiddleware

信息

需要安装 a2wsgi,例如使用 pip install a2wsgi

您需要从 a2wsgi 导入 WSGIMiddleware

然后使用该中间件包装 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))
🤓 Other versions and variants
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))

注意

之前推荐使用 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"
}