Flask、Django、Tornado、FastAPI 之 Python Web 并发测试


前言

目前Python Web生态圈中涌现出许许多多优秀的Web框架,投入生产最多的要属Flask和Django,Tornado有别于上述两种框架,它是Python界的一大异步网络框架,可以支撑上万级的连接,FastAPI则是这几个框架中的一个新秀,它是一款集成了Swagger文档的高性能Web框架。

对于这四种不同的Python Web框架,各有特点,一般适用于不同的业务场景。为了进一步了解他们的并发性能,我将在同样的系统环境下对他们依次进行压测。


一、Webbench

Webbench是一个网站测压工具,它能测试相同硬件上,不同服务的性能;以及不同硬件上同一个服务的运行状况。Webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数、每秒钟传输数据量。并且它最多支持模拟3W个并发连接测试服务器负载能力。

二、下载

1.通过GitHub下载源码

git clone https://github.com/EZLippi/WebBench

2.安装

sudo make && sudo make install PREFIX=your_path_to_webbench

3.压测命令

webbench -c 500 -t 5 http://127.0.0.1:5000/

4.代码

此处的代码均是框架官网的快速开始小案例,有需要的可以直接参考不同官网的示例代码。

Flask

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_flask():
    return 'Hello, flask!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

Django

安装完后直接运行

python3 manage.py runserver

Tornado

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

FastAPI

from fastapi import FastAPI

app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}

压测结果

Flask

5秒 500并发

在这里插入图片描述

5秒 1000并发

在这里插入图片描述

Django

1秒 500并发

在这里插入图片描述

Tornado

5秒 500并发

在这里插入图片描述

5秒 1000并发

在这里插入图片描述

FastAPI

5秒 500并发

在这里插入图片描述

5秒 1000并发

在这里插入图片描述


总结

测试结果会因为系统环境的不同会有偏差,Django的测试其实并不需要,因为其内置的服务器性能极低,一般会有替代方案做生产使用。从测试的截图结果来看,FastAPI的表现让我大开眼界,并发性能竟然超过了Tornado,也希望日后Python Web的生态圈能越来越优秀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值