python flask tornado fastapi sanic框架性能研究

本文对Python的Flask、Tornado、Sanic和FastAPI四个Web框架进行了性能测试,涉及GET、POST请求、JSON序列化和模板渲染。测试结果显示,Sanic和FastAPI在性能上表现最佳,尤其在高并发情况下。Sanic处理GET、POST和JSON请求的速度最快,而FastAPI在模板渲染上胜出。此外,Python版本对Flask+gevent的影响较小,但启用gevent能显著提升性能。
摘要由CSDN通过智能技术生成

Python Web 框架性能研究

三个方面:性能上,应用场景上,框架本身特点

性能上:

性能测试工具基本介绍:测试环境: 电脑环境:win10   i5  4G独显 8G内存       ubuntu18.04 python3.6.8   ab 2.3   python2.7

ab是Apache超文本传输协议(HTTP)的性能测试工具。       主要用它来测试框架每秒处理的请求数

并发连接数:某个时刻服务器所接受的请求数目

并发用户数:简单理解就是用户数

吞吐量(率):每秒处理的请求数

服务器平均请求等待时间:        处理完成所有请求数所花费的时间 / 总请求数      

简单理解就是:处理每个请求平均花费的时间,单位是毫秒

执行原理   例如:1000并发连接数 100并发用户数指的是        模拟100用户在同一时刻连续不断的发送1000个请求给服务器

 

测试分为5组,

分别是 100并发连接数 100并发用户数

1000并发连接数 100并发用户数

10000并发连接数 100并发用户数

10000并发连接数 500并发用户数

10000并发连接数 1000并发用户数

每组数据测了5次求的平均值

 

GET请求:

# flask
@app.route("/hello")
def hello_test():
    grate = 85
    if grate > 90:
        res = "非常优秀"
    elif grate > 80:
        res = "优秀"
    elif grate > 70:
        res = "良好"
    elif grate > 60:
        res = "及格"
    else:
        res = "不及格"
    return res

# tornado
class IndexHandler(tornado.web.RequestHandler):
    def get(self,*args,**kwargs):
        grate = 85
        if grate > 90:
            res = "非常优秀"
        elif grate > 80:
            res = "优秀"
        elif grate > 70:
            res = "良好"
        elif grate > 60:
            res = "及格"
        else:
            res = "不及格"
        self.write(res)

# sanic
@app.route("/")
async def index(request):
    grate = 85
    if grate > 90:
        res = "非常优秀"
    elif grate > 80:
        res = "优秀"
    elif grate > 70:
        res = "良好"
    elif grate > 60:
        res = "及格"
    else:
        res = "不及格"
    return text(res)

# fastapi
@app.get("/")
async def root():
    grate = 85
    if grate > 90:
        res = "非常优秀"
    elif grate > 80:
        res = "优秀"
    elif grate > 70:
        res = "良好"
    elif grate > 60:
        res = "及格"
    else:
        res = "不及格"
    return res

   测试结果:

第一吞吐量测试

 结论:GET请求中,sanic,fastapi框架每秒处理的请求出最多,其次是tornado和flask+gevent

第二用户平均等待时间

 结论:当并发用户数比较小时,各各框架之间用户平均等待时间相差是不大的,当并发用户数达到较高时,sanic框架和fastapi框架明显在用户平均等待时间上远远小于其他框架,性能更好

POST请求

#flask 
@app.route("/login",methods=["POST","GET"])
def login_test():
    if request.method == "GET":
        return render_template("index.html")
    if request.method == "POST":
        username = request.form.get("username")
        password = request.form.get("password")
        if username == "te
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值