WSGI の組み込み - Flask、Django など¶
🌐 AI と人間による翻訳
この翻訳は、人間のガイドに基づいて AI によって作成されました。🤝
原文の意図を取り違えていたり、不自然な表現になっている可能性があります。🤖
AI LLM をより適切に誘導するのを手伝う ことで、この翻訳を改善できます。
サブアプリケーション - マウント、プロキシの背後 で見たように、WSGI アプリケーションをマウントできます。
そのために WSGIMiddleware を使用して、Flask や Django などの WSGI アプリをラップできます。
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"
}