這里測試的python異步框架幾乎都與ASGI兼容(除了aiohttp)。
基準測試的目的不是測試部署(例如uvicorn與hypercorn等)或數據庫(ORM,驅動程序),而是測試框架本身。基準檢查檢查請求解析(正文,標頭,表單數據,查詢),路由,響應。
接受請求并返回帶有自定義動態標頭的HTML響應解析上傳的文件,將其存儲在磁盤上并返回文本響應解析路徑參數,查詢字符串,JSON正文并返回JSON響應的綜合統計。
測試硬件
該基準使用Github Action運行。根據github文檔 ,運行的硬件規格為:
- 2核vCPU(Intel®Xeon®Platinum 8272CL(Cascade Lake),Intel®Xeon®8171M 2.1GHz(Skylake))
- 7 GB的RAM內存
- 14 GB的SSD磁盤空間
- 操作系統Ubuntu 20.04
使用gunicorn / uvicorn命令從docker運行ASGI應用程序:
- gunicorn -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8080 app:app
應用程序的源代碼可以在此處找到 。
https://github.com/klen/py-frameworks-bench/tree/develop/frameworks
通過WRK實用程序收到結果:
- wrk -d15s -t4 -c64 [URL]
基準測試包含三種測試:
- “簡單”測試:接受請求并返回帶有自定義動態標頭的HTML響應。該測試僅模擬單個HTML響應。
- “上傳”測試:接受上傳的文件并將其存儲在磁盤上。該測試模擬多部分表單數據處理并處理文件。
- “ API”測試:檢查標頭,解析路徑參數,查詢字符串,JSON正文并返回JSON響應。該測試模擬JSON REST API。
接受請求并返回帶有自定義動態標頭的HTML響應
該測試僅模擬單個HTML響應。按最大請求數/秒排序
解析上傳的文件,將其存儲在磁盤上并返回文本響應
該測試模擬多部分表單數據處理并處理文件。按最大請求數/秒排序
解析路徑參數,查詢字符串,JSON正文并返回JSON響應
該測試模擬一個簡單的JSON REST API端點。按最大要求/秒排序
綜合統計
綜合基準測試結果
按已完成的請求排序
原文鏈接:https://www.toutiao.com/a6957155701424816651/