突發奇想,我想驗證一下Python的非同步後端框架的併發能力.
目前主流的非同步框架有Fastapi,Django和Tornado. 順便我想對比一下它們的效能,但是考慮到Tornado自成一派沒有遵循Asgi,沒辦法遮蔽伺服器部分的程式碼效率,所以我打算只拿Fastapi和Django做下對比.
實驗設計
執行裝置: 4核8程序虛擬機器
為了只比較框架的優劣,兩個框架用都用gunicorn去部署.
分別對單程序和8個程序部署進行了測試.
每次測試執行20輪併發請求,每輪併發請求數分別按照單程序部署100,8程序部署500遞增.
每個併發請求是請求伺服器的一個本地檔案來模擬查詢.
最後統計RPS(每秒能處理響應數).
結果
這是單程序的併發結果
可以看到Fastapi明顯要比Django的效能高. 單程序每秒能處理500~600個請求. Django是300~400.
為了測試併發的極限我在8個程序的服務上跑了最高1W的併發.結果如下:
可以看到Fastapi的最高每秒能處理2300+的請求, Django的話1500左右.
所以我個人強烈推薦Fastapi!!! 不光效能強悍,它的原始碼更是美如畫!
相關程式碼和資料
相關的測試程式碼和結果我放到了github上 https://github.com/Jaesirky/test_django_and_fastapi
有興趣的自便.