咱们好~我是小方,欢迎咱们重视笋货测验笔记体完记住俾个like呀
回顾
在上篇中,整个数据工厂的核心现已是开发完毕了,可是渠道的话,必定得有一些数据报表,好看的报表能够给你升职加薪带来帮助
数据报表
数据报表有几个目标,咱们能够看看下图
用户数、场景数、项目数、事务线数、调用成功率、调用量
履行状况、调用办法、事务线散布饼图
终究有最近7天场景调用量、创立量、成功数、异常数、失利数
- 最上面6个目标
直接调用BaseCrud.get_with_count
办法即可,直接查询出数量
- 中间饼图目标
运转状况和调用办法直接查log
表,进行分组统计数量,事务线散布查case
表,办法同上
- 最近7天场景趋势图
这儿目标有调用量、成功数、失利数、异常数、创立数,其中除了创立数,其他目标都能够经过log
查询得出
先经过开端时刻和完毕时刻进行挑选数据,开端时刻为今日,完毕时刻为今日-6天,再经过日期进行分组,经过函数case_when
和sum
算出成功数、失利数、异常数,经过count
算出总数,可是这儿需求留意一点,有些日期的确没有数据,这时候需求手动弥补数据,经过while
,从开端日期开端算起,如果在源数据取不到数据,就默许弥补0,循环完毕条件为开端日期大于完毕日期
终究效果图
git Webhook同步项目
因为咱们的服务跟项目进行解耦了,项目存放在git上,每次咱们更新代码,是不是都得在渠道上履行一下同步项目,长久下来的确比较繁琐,为此,咱们能够运用git的webhook功用,每逢有push代码时,经过webhook调用数据工厂的api,履行同步项目
咱们能够来看看gitee的webhook功用,简介地址:gitee.com/help/articl…
- WebHook 简介
简单来讲便是咱们只需维护一个api,每次push时,post恳求这个api,就能实现同步项目功用
- WebHook 密钥验证和验证算法
gitee webhook文档有提到,webhook可运用签名办法,什么是签名呢?浅显来讲便是服务端承认收到的恳求完好且可信任,才履行操作,这种便是避免歹意刷api
这儿采用了HmacSHA256算法计算签名,下面也给了个demo,可是demo只支撑Python2,不得不不吐槽一下不过问题不大,自己另写一个呗,签名算法代码如下
class Sha256(object):
@classmethod
def encrypt(cls, timestamp: str):
secret = constants.SECRET
data = f"{timestamp}n{secret}"
sign = base64.b64encode(
hmac.new(secret.encode('utf-8'), data.encode('utf-8'), digestmod=sha256).digest()).decode()
return sign
- 同步逻辑代码改造
将之前的sync_project_logic
办法改造一下,判断是哪个sys过来的恳求,如果是渠道上就经过主键id查出项目信息,履行人默许为恳求的那个人,如果是gitee的webhook就经过git的项目名称查出项目信息,履行人为admin用户,后续的逻辑跟之前相同
上面现已写了个签名办法,咱们只需求验证gitee传过来的签名数据是否与后端服务加密生成的签名数据共同,共同即可后续的操作
这儿咱们只需求从request
中获取恳求头信息,再进行校验好了,check逻辑比较简单,咱们可看看下面的代码
其实这儿校验逻辑能够放在中间件里做,可是就这么一个api没什么必要具体原因可看看解释哈,散步哥yyds!!!
终究sync_project_logic_by_git
逻辑如下
路由函数这儿就不截图,直接看看源码好了比较简单,增加路由
终究记住给这个路由加上白名单
其他优化点
脚本履行引进运转日志,日志的话,需求手艺注入进去,然后终究return回来,渠道只负责接纳日志
终究给咱们看看内部数据工厂的日志吧,后续我也把相关日志装修器放上去,在funcase项目哦~
总结
今日到这儿的话,数据工厂现已开发完了,咱们还有什么需求或许主意能够咨询我,咱们一起交流学习哈~下篇咱们来进行布置上线,持续弥补运用说明文档、功用介绍文档和布置文档等等
- 项目地址