先上结果:
- 完整的django初始框架,开发服务器:390 rps
- 单文件django,开发服务器: 406 rps
- 单文件flask,开发服务器:423 rps
- 完整的django初始框架,gunicorn: 462rps
- 单文件面django,gunicorn:482 rps
- 单文件flask,gunicorn:479 rps
- 完整的django初始框架+rest_frameword,gunicorn:447rps
结论:单文件最小django和单文件最小flask性能相当
0. 测试方法:
- django 2.1.4,flask1.0.2
- 运行环境:在pycharm的terminal里启动开发服务器/在wsl里用gunicorn启动服务器
- 测试环境:在wsl里用boom测试并发100个请求10秒
- 运行几次取最高值,波动区间不大
1. 完整的django初始框架,开发服务器
代码
from django.http.response import JsonResponse
def index(request):
return JsonResponse('laowang', safe=False)
结果
-------- Results --------
Successful calls 3908
Total time 10.0110 s
Average 0.1480 s
Fastest 0.0429 s
Slowest 9.1443 s
Amplitude 9.1014 s
Standard deviation 0.433375
RPS 390
BSI Pretty good
-------- Status codes --------
Code 200 3908 times.
-------- Legend --------
RPS: Request Per Second
BSI: Boom Speed Index
2. 单文件django,开发服务器
代码
import sys
from django.urls import path
from django.http.response import JsonResponse
from django.conf import settings
settings.configure(
DEBUG = True,
ROOT_URLCONF = __name__
)
def index(reques):
return JsonResponse('laowang', safe=False)
urlpatterns = (
path('', index),
)
if __name__ == '__main__':
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
结果
-------- Results --------
Successful calls 4072
Total time 10.0107 s
Average 0.1391 s
Fastest 0.0365 s
Slowest 8.6824 s
Amplitude 8.6459 s
Standard deviation 0.457704
RPS 406
BSI Pretty good
-------- Status codes --------
Code 200 4072 times.
3. 单文件flask,开发服务器
代码
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return jsonify('laowang')
if __name__ == '__main__':
app.run()
结果
-------- Results --------
Successful calls 4238
Total time 10.0177 s
Average 0.1289 s
Fastest 0.0417 s
Slowest 6.7860 s
Amplitude 6.7443 s
Standard deviation 0.394020
RPS 423
BSI Pretty good
-------- Status codes --------
Code 200 4238 times.
5. 单文件flask,gunicorn单worker
-------- Results --------
Successful calls 4804
Total time 10.0106 s
Average 0.1187 s
Fastest 0.0287 s
Slowest 7.7569 s
Amplitude 7.7282 s
Standard deviation 0.406187
RPS 479
BSI Pretty good
-------- Status codes --------
Code 200 4804 times.
6. 单文件django,gunicorn单worker
-------- Results --------
Successful calls 4826
Total time 10.0092 s
Average 0.1099 s
Fastest 0.0360 s
Slowest 7.7540 s
Amplitude 7.7180 s
Standard deviation 0.341663
RPS 482
BSI Pretty good
-------- Status codes --------
Code 200 4826 times.