记一次flask web接口速度优化
本项目采用 flask + mongodb
速度贼慢
先上图
network上的查看 TTFB 请求时间过长
POSTMAN 中 查看同样是8秒多
因此 我们要找找问题在哪
解决方法
首先查明是TTFB时间过长,是后端服务器导致的接口速度过慢。
单个接口单次访问速度过慢原因列举(这里我们锁定3点):
1.无可避免首先要检查数据库的查询速度
这是数据库查询的速度 是0.028s 。 很显然并不是数据库查询导致的原因。
2.整体的代码逻辑是否过于复杂导致速度很慢 (很轻易就能排除)
3.这也是我最终发现的(不同的json序列化会导致时间长短不一致)
这里是最重要的一点, 因为本项目采取的是MongoDB数据库。 因而它本身是bson数据格式。
而python的第三方模块中 有bson包中的 json_utils 能够帮助序列化。 因此一开始选择了它。
但是当我查看速时居然发现是json序列化的时候导致时间过慢
1.65S左右。
json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000) ujson 序列化: 2.084 反序列化: 1.157 总时间: 3.241 yajl 序列化: 1.910 反序列化: 1.970 总时间: 3.880 cjson 序列化: 3.305 反序列化: 1.328 总时间: 4.632 simplejson 序列化: 10.279 反序列化: 4.658 总时间: 14.937 stdlib json 序列化: 7.013 反序列化: 8.594 总时间: 15.607
上面是python中 5个json库的序列化对比
因此,我选择了其中最快的尝试了一下。果然 速度显著提升。
万般皆下品,唯有读书高!