原有的 Flask 應(yīng)用如何無縫接入現(xiàn)有 FastAPI 項目
前天的抽獎結(jié)果比較尷尬,當時是為了測試一下抽獎的流程,自己也參與了下,沒想到中獎的就是自己。這次我決定送兩本《代碼大全2》,對,沒錯,就是下面這本珍藏版,文末抽兩本:
好了,話不多說。接下來是今天的干貨。
通常是先使用 Flask 開發(fā)了項目,后來又用 FastAPI 開發(fā)了幾個接口,但是一時半會無法全部遷到 FastAPI,那么就需要讓之前的 Flask 應(yīng)用接入現(xiàn)有的 FastAPI 應(yīng)用,然后有時間了再慢慢遷移。
比如說你之前的 Flask 項目是這樣的;
文件名 flask_project.py
from?flask?import?Flask
app?=?Flask(__name__)
@app.route('/')
def?index():
????return?'Flask?Index?Page'
@app.route('/hello')
def?hello():
????return?'Flask?Hello,?World'
現(xiàn)在,借助于 FastAPI 的 WSGIMiddleware,我們可以輕松的將 WSGI 應(yīng)用作為 FastAPI 的一個子應(yīng)用。
編寫?FastAPI 應(yīng)用,只需將原有的 flask app 導入,使用 WSGIMiddleware 包裹起來,放在 FastAPI 的子應(yīng)用里面,代碼如下所示:
文件名 api.py
from?fastapi?import?FastAPI
from?fastapi.middleware.wsgi?import?WSGIMiddleware
from?flask_project?import?app?as?flask_app
app?=?FastAPI()
@app.get("/")
async?def?root():
????return?"FastAPI?index?page"
app.mount("/flask",?WSGIMiddleware(flask_app))
現(xiàn)在,只需要運行 uvicorn api:app --host 0.0.0.0 --port 8000 --reload,原來的 Flask app 就運行起來了,是不是很方便?
當我們訪問 / 時就是 FastAPI 的應(yīng)用,當我們訪問 /flask 時,就是 Flask 應(yīng)用:



最后的話
FastAPI 是非常火熱的 Web API 框架,一度超越 Django REST Framework,得益于它的簡潔和高性能,如果你還不熟悉的話,可以去官方網(wǎng)站 https://fastapi.tiangolo.com/ 學習一下,雖說是英文,但是很容易看懂,可以說是保姆級教程,是非常值得學習的技術(shù)棧。
推薦閱讀:
開發(fā)環(huán)境下,如何通過一個命令讓 fastapi 和 celery 一起工作
FastAPI:快速開發(fā)一個文本轉(zhuǎn)語音的接口
Django,F(xiàn)lask ,F(xiàn)astAPI 怎么選?
最后是今天的送書活動,關(guān)注公眾號「Python七號」回復「送書」即可抽獎。

