flask與sanic框架對比
我在服務器端運行web服務,在本地Windows環境下利用ab對web服務進行壓力測試。分析可以分作兩個部分:
- flask+gunicorn與sanic的對比;
- flask+gunicorn與sanic+uvicorn的對比;
主要的參考指標包括:
- Time taken for tests,即處理請求所花費的總時間;
- Requests per second,即吞吐量;
- user time per request,即用戶每請求所花費的時間;
- Time per request,每請求平均花費時間;
下面利用圖標的形式對所得數據進行一個解析:
flask+gunicorn對比sanic
表中(n,c)代表(總請求數,並發數)
測試框架 | (n,c) | Time taken for tests | Requests per second | user Time per request | Time per request |
---|---|---|---|---|---|
flask+gunicorn -w 8 | (100 ,10) | 0.031 | 3227.58 | 3.098 | 0.31 |
flask+gunicorn -w 8 | (100 ,50) | 0.016 | 6401.64 | 7.811 | 0.156 |
flask+gunicorn -w 8 | (100 ,100) | 0.03 | 3278.69 | 30.5 | 0.305 |
flask+gunicorn -w 8 | (500 ,50) | 0.125 | 4007.31 | 12.477 | 0.25 |
flask+gunicorn -w 8 | (500 ,100) | 0.109 | 4572.52 | 21.87 | 0.219 |
flask+gunicorn -w 8 | (1000 ,200) | 0.229 | 4362.03 | 45.85 | 0.229 |
sanic | (100 ,10) | 0.068 | 1468.28 | 6.811 | 0.681 |
sanic | (100 ,50) | 0.059 | 1681.55 | 29.735 | 0.595 |
sanic | (100 ,100) | 0.058 | 1732.50 | 57.72 | 0.577 |
sanic | (500 ,50) | 0.292 | 1771.28 | 29.128 | 0.584 |
sanic | (500 ,100) | 0.314 | 1592.13 | 62.809 | 0.628 |
sanic | (1000 ,200) | 0.6 | 1667.02 | 119.975 | 0.6 |
總響應時間
對總響應時間可以看出,sanic的總響應時間明顯長於flask+gunicorn
吞吐量
圖片表明sanic的吞吐量明顯的低於flask配合gunicorn;
用戶每請求所花費的時間
sanic用戶每請求所花費的時間明顯長於flask+gunicorn
每請求平均花費時間
sanic所花費的時間明顯要多
flask+gunicorn對比sanic+uvicorn
測試框架 | (n,c) | Time taken for tests | Requests per second | user Time per request | Time per request |
---|---|---|---|---|---|
sanic+uvicorn -w 8 | (100 ,100) | 0.035 | 2869.52 | 34.869 | 0.348 |
sanic+uvicorn -w 8 | (1000 ,100) | 0.252 | 3970.54 | 25.186 | 0.252 |
sanic+uvicorn -w 8 | (10000 ,100) | 3.432 | 2913.64 | 34.321 | 0.343 |
sanic+uvicorn -w 8 | (10000 ,500) | 5.544 | 1803.77 | 277.197 | 0.554 |
sanic+uvicorn -w 8 | (10000 ,1000) | 5.425 | 1843.44 | 542.465 | 0.542 |
flask+gunicorn -w 8 | (100 ,100) | 0.03 | 3278.69 | 30.5 | 0.305 |
flask+gunicorn -w 8 | (1000 ,100) | 0.221 | 4526.18 | 22.094 | 0.221 |
flask+gunicorn -w 8 | (10000 ,100) | 2.163 | 4623.68 | 21.628 | 0.216 |
flask+gunicorn -w 8 | (10000 ,500) | 2.375 | 4210.55 | 118.749 | 0.237 |
flask+gunicorn -w 8 | (10000 ,1000) | 2.461 | 4063.54 | 246.091 | 0.246 |
總響應時間
對總響應時間可以看出,sanic+uvicorn的總響應時間明顯長於flask+gunicorn
吞吐量
圖片表明sanic+uvicorn的吞吐量明顯的低於flask配合gunicorn;
用戶每請求所花費的時間
sanic+uvicorn用戶每請求所花費的時間明顯長於flask+gunicorn
每請求平均花費時間
sanic+uvicorn所花費的時間明顯要多
結論
通過上面的分析我們看到無論從哪一個方面出發,flask+gunicorn的搭配的在這個測試案例中的結果還是優於sanic的。而且,通過調查,發現將sanic當作web接口框架的企業寥寥無幾。從穩妥的角度出發,建議還是繼續沿用flask+gunicorn的框架搭建web接口以達到預期目的。