Django和Fastapi非同步效能對比

侯佳奇發表於2024-03-15

突發奇想,我想驗證一下Python的非同步後端框架的併發能力.

目前主流的非同步框架有Fastapi,Django和Tornado. 順便我想對比一下它們的效能,但是考慮到Tornado自成一派沒有遵循Asgi,沒辦法遮蔽伺服器部分的程式碼效率,所以我打算只拿Fastapi和Django做下對比.

實驗設計

執行裝置: 4核8程序虛擬機器

為了只比較框架的優劣,兩個框架用都用gunicorn去部署.

分別對單程序和8個程序部署進行了測試.

每次測試執行20輪併發請求,每輪併發請求數分別按照單程序部署100,8程序部署500遞增.

每個併發請求是請求伺服器的一個本地檔案來模擬查詢.

最後統計RPS(每秒能處理響應數).

結果

這是單程序的併發結果

img

可以看到Fastapi明顯要比Django的效能高. 單程序每秒能處理500~600個請求. Django是300~400.

為了測試併發的極限我在8個程序的服務上跑了最高1W的併發.結果如下:

img

可以看到Fastapi的最高每秒能處理2300+的請求, Django的話1500左右.

所以我個人強烈推薦Fastapi!!! 不光效能強悍,它的原始碼更是美如畫!

相關程式碼和資料

相關的測試程式碼和結果我放到了github上 https://github.com/Jaesirky/test_django_and_fastapi 有興趣的自便.

相關文章