<返回更多

异步Python Web框架比较

2021-05-08  今日头条  飞鱼在浪屿
加入收藏
异步Python Web框架比较

 

这里测试的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]

基准测试包含三种测试:

  1. “简单”测试:接受请求并返回带有自定义动态标头的HTML响应。该测试仅模拟单个HTML响应。
  2. “上传”测试:接受上传的文件并将其存储在磁盘上。该测试模拟多部分表单数据处理并处理文件。
  3. “ API”测试:检查标头,解析路径参数,查询字符串,JSON正文并返回JSON响应。该测试模拟JSON REST API。

接受请求并返回带有自定义动态标头的HTML响应

该测试仅模拟单个HTML响应。按最大请求数/秒排序

框架

请求/秒

延迟50%(毫秒)

延迟75%(毫秒)

延迟平均(毫秒)

blacksheep 1.0.3

13805

3.71

6.29

4.61

muffin 0.70

12636

4.02

6.97

5.04

falcon 3.0.0

11495

4.43

7.62

5.54

starlette 0.14.2

10599

4.77

8.22

6.01

emmett 2.2.1

9922

5.06

8.88

6.42

Fastapi 0.63.0

7262

6.89

12.15

8.80

Sanic 21.3.4

6360

7.89

13.76

10.05

aiohttp 3.7.4.post0

5088

12.40

12.88

12.58

quart 0.14.1

2771

21.87

25.84

23.09

django 3.2

1368

45.20

52.33

46.72


解析上传的文件,将其存储在磁盘上并返回文本响应

该测试模拟多部分表单数据处理并处理文件。按最大请求数/秒排序

框架

请求/秒

延迟50%(毫秒)

延迟75%(毫秒)

延迟平均(毫秒)

blacksheep 1.0.3

4160

12.11

21.48

16.12

muffin 0.70

3203

15.87

27.90

19.96

falcon 3.0.0

3042

16.68

28.77

21.02

starlette 0.14.2

2747

18.59

31.54

23.34

emmett 2.2.1

1949年

25.65

45.74

32.79

Fastapi 0.63.0

1793年

27.77

49.93

35.64

Sanic 21.3.4

1788年

35.60

36.36

35.79

aiohttp 3.7.4.post0

1207

49.96

58.89

52.96

quart 0.14.1

1095

58.92

61.70

58.36

django 3.2

776

80.86

93.00

82.32


解析路径参数,查询字符串,JSON正文并返回JSON响应

该测试模拟一个简单的JSON REST API端点。按最大要求/秒排序

框架

请求/秒

延迟50%(毫秒)

延迟75%(毫秒)

延迟平均(毫秒)

blacksheep 1.0.3

7499

6.74

12.06

8.51

muffin 0.70

7232

6.93

12.29

8.83

falcon 3.0.0

7070

7.05

12.58

9.02

starlette 0.14.2

5602

8.95

15.91

11.40

emmett 2.2.1

5379

9.19

16.35

11.89

Fastapi 0.63.0

5126

9.66

17.36

12.50

Sanic 21.3.4

4406

11.30

20.27

14.50

aiohttp 3.7.4.post0

3232

19.70

20.24

19.81

quart 0.14.1

1767

36.32

38.11

36.19

django 3.2

1146

54.00

62.70

55.80


综合统计

综合基准测试结果

按已完成的请求排序

框架

请求已完成

平均延迟50%(毫秒)

平均延迟75%(毫秒)

平均延迟(毫秒)

blacksheep 1.0.3

381960

7.52

13.28

9.75

muffin 0.70

343635

8.98

15.82

11.34

falcon 3.0.0

322110

9.98

17.15

12.57

starlette 0.14.2

272250

13.12

23.29

16.73

emmett 2.2.1

243825

21.56

28.38

23.96

Fastapi 0.63.0

221715

11.25

19.63

14.32

Sanic 21.3.4

201915

15.32

27.45

19.65

aiohttp 3.7.4.post0

151620

22.57

23.16

22.73

quart 0.14.1

84495

39.04

41.88

39.21

django 3.2

49350

60.02

69.34

61.61

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>