只要 2 招!讓 Flask 效能就像是坐上一台噴射機~
用過 Flask 的都說簡單好寫,但效能確實比不上 FastAPI 甚至是其他語言寫成的 Web 應用。
如果你是新專案大可直接選擇使用 FastAPI 進行開發,擺脫效率較慢的宿命;不過有些專案早已用 Flask 開發的話,就不見得能說換就換,畢竟對開發團隊來說轉換成本與開發時間也是需要考量的要點,所幸現在可以用 Quart 搭配 Hypercorn 或 Unicorn 簡單提升 Flask 的效能,過程也不用改太多 code (超爽
Quart 其實就是 Flask 的 reimplement, 但是支援 asyncio 以及 WebSockets 等功能,理論上 Flask 的應用,可以無痛直接換成 Quart 就能夠得到效能提升。
而 Hypercorn 與 Unicorn 則是 Gunicorn 的替代方案,效能也較好,換掉 Gunicorn 可以再進一步提升效能,何樂而不為呢!
根據下列 Medium 文章的測試,這兩招就大概提升了近 20 倍的效能 🤩:
Through a series of relatively simple upgrades, we were able to take a simple Flask app from 10 requests per second to around 200 requests per second, with only two processes!
➡ https://levelup.gitconnected.com/supercharging-pythons-scalability-1eec2f501dd5
不過如果你的應用是 CPU-bound 的話,那其實這 2 招多半助益不大,還是花錢租更好的機器或者關鍵運算部分改用 C, Go, Rust 等語言實作吧⋯⋯。
Quart ➡ https://pgjones.gitlab.io/quart/
Hypercorn ➡ https://pgjones.gitlab.io/hypercorn/
Uvicorn ➡ https://www.uvicorn.org/