用Locust分别对Python 2.7 / 3.9 / 3.10上的CherryPy网站进行压力测试
创建:22-05-23 15:58
修改:22-05-23 16:00
我是 Python 及其 Web 框架 CherryPy 的粉丝。 最近,我将我的一个基于 CherryPy 的站点从 Python 2.7 / CherryPy 17.4.2 升级到了 Python 3.X / CherryPy 18.6.1。使用 2to3 工具,从 Python 2 到 Python 3 的代码迁移非常简单,我只需要手动更改一小部分代码。 升级后,我很好奇这次迁移是否会对性能产生任何影响,所以我使用 开源的 Locust 负载测试工具(太好用了!),在我的测试机器上进行压力测试(Surface Go 2 - Intel Core M3 8100Y (1.10GHz) 内存8GB ),这台机器同时运行我的 CherryPy 的 3 个实例测试站点:
检测结果有好多好消息!我很惊讶 Python 2.7 实例和 Python 3.9 实例之间的速度差异如此之大,而 Python 3.10 实例甚至更好一点! ** 并发:150 个用户 **
值得一提的是,被测站点并不是一个“hello world”项目,它是一个真实的小型站点,从SQLite后端数据库中读取内容,并通过Jinja2模板引擎渲染页面,还使用了cookies和sessions,Locust 最后加载到的输出页面大小平均约为 30 Kb。此外,考虑到它在双核 Surface 上运行,我对这个性能已经非常满意了。 另外,为什么我仍然喜欢旧的 CherryPy 而不是更流行的微框架,如 Flask 和 FastAPI?因为据我所知,如果在生产中使用,Flask 或 FastAPI 需要另一个生产级的 WSGI HTTP Server,官方推荐的是 gunicorn,但它只在 UNIX 下可用,而我主要是 windows 用户...... CherryPy / Cheroot 可以也是这个 WSGI 服务器,但为什么我不应该使用cherrypy 作为一体化解决方案呢? |
|