콘텐츠로 이동

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 Flask의 응답을 볼 수 있습니다:

{
    "message": "Hello World"
}