美文网首页
工具1-获取监控的业务数据(二)

工具1-获取监控的业务数据(二)

作者: 软件开发技术修炼 | 来源:发表于2022-03-30 20:06 被阅读0次

    背景:
    由于公司打卡规则是15min采点一次,采点即定位,如定位异常会不计算在工时内,除非进行异常申诉;
    大多同事经常因为不小心杀掉app进程、或打电话引起网络异常等原因,引起采点异常;
    故想出监控采点接口,通过打通钉钉群及jenkins,及时监控到异常,得以立马打开app恢复正常

    import requests
    import json
    import time
    
    
    def login():
        '''
        :return: 获取token,userId
        '''
    
        url = "https://{url}/api/ideal-new-user/api/public/user/login"
        headers = {"Content-Type": "application/json"}
        parameters = {"phoneId": "1557235××××", "password": "Tao189781"}
        s = requests.session()
        res = s.post(url,headers = headers, data = json.dumps(parameters),verify=False)
        res = res.json()
        token = res['data']['accessToken']
        userId = res['data']['userId']
        return userId,token
    
    
    第一步:获取userId,此处有几点接口基础知识:

    本来想着获取token,因为就2个接口;后面懒得传参,直接用session

    1、requests.session():维持会话,可以在跨请求时保持某些参数,就是免传token、cookies
    使用方式:实例化session: s = requests.session(),再使用session发起请求
    2、传data参数进行json.dumps、url是https请求,需带上verify=False
    3、提取参数方式:res['data']['userId']

    def get_point(userId):
        '''
        :param userId: 获得参数
        :return: 返回异常采点值
        '''
        # attendDate = 2022 - 03 - 30
        url = "https://{url}/api/ideal-new-attend/api/attend/date/attendPonitList"
        # time = datetime.now()    #当前时间年月日时分秒
        date = time.strftime("%Y-%m-%d")   #输出格式年月日
        headers = {"Content-Type": "application/json"}
        parameters = {"attendDate":date,"type":1,"userId":userId}
        res = requests.get(url,params=parameters,headers=headers,verify=False)
        res1 = res.json()['data']['attendDatePointDTOList']
        # print(res1)
        for num, item in enumerate(res1):
            # 异常点时间
            appPonitTime = item['appPonitTime']
            # 状态
            type = item['type']
            # 是否异常
            valid = item['valid']
            # print(appPonitTime,type,valid)
    
            if not valid:
                resp = {
                    "时间点": appPonitTime,
                    "状态": type,
                    "采点是否正常": valid
                }
                yield resp
    
    第二步:关联参数userId,获取监控数据

    此处说明几点:
    1、date = time.strftime("%Y-%m-%d") ,获取当前年月日
    2、遍历列表中的字典:for num, item in enumerate(res1):
    res1 = [{'key':'a','value':'b'},{},{}]
    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标

    enumerate(X, [start=0])
    

    函数中的参数X可以是一个迭代器(iterator)或者是一个序列,start是起始计数值,默认从0开始。X可以是一个字典。(注意观察下面的输出结果)

    for i,item in enumerate(b, start=10):
      print(i,item)
    output:
    10 1
    11 2
    12 3
    

    3、 valid = True, if not valid:如果False,输出
    4、yield ,看做return之后再把它看成生成器(generator)的一部分(带yield的函数才是真正的迭代器)

    这篇挺详细挺一针见血的解释了yield
    https://blog.csdn.net/mieleizhi0522/article/details/82142856

    下篇讲解:如何与钉钉群打通

    相关文章

      网友评论

          本文标题:工具1-获取监控的业务数据(二)

          本文链接:https://www.haomeiwen.com/subject/egdwjrtx.html