记一次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库的序列化对比

因此,我选择了其中最快的尝试了一下。果然 速度显著提升。 

原文地址:https://www.cnblogs.com/s686zhou/p/12911515.html