Adicionando WSGI - Flask, Django, entre outros¶
Como você viu em Subaplicações - Montagens e Atrás de um 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 WSGIMiddleware¶
Você precisa importar o WSGIMiddleware.
Em seguida, encapsule a aplicação WSGI (e.g. Flask) com o middleware.
E então monte isso sob um path.
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))
Confira¶
Agora, todas as requisições sob o path /v1/ serão manipuladas pela aplicação 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"
}