Ir para o conteúdo

Adicionando WSGI - Flask, Django, entre outros

Como você viu em Sub Applications - Mounts e Behind a Proxy, você pode "montar" aplicações WSGI.

Para isso, você pode utilizar o WSGIMiddleware para encapsular a sua aplicação WSGI, como por exemplo Flask, Django, etc.

Usando o WSGIMiddleware

Você precisa importar o WSGIMiddleware.

Em seguinda, encapsular a aplicação WSGI (e.g. Flask) com o middleware.

E então "montar" em um caminho de rota.

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))

Conferindo

Agora todas as requisições sob o caminho /v1/ serão manipuladas pela aplicação utilizando Flask.

E o resto será manipulado pelo FastAPI.

Se você rodar a aplicação e ir até http://localhost:8000/v1/, você verá o retorno do Flask:

Hello, World from Flask!

E se você for até http://localhost:8000/v2, você verá o retorno do FastAPI:

{
    "message": "Hello World"
}