import json from MyUtils.ZillionUtil import ZillionUtil from MyUtils.Dingtalk import send_message import datetime import time # 获取operate_time def select(hbase_database, buildingid): Criteria = { "object_sign": buildingid, "instance_name": "fjd_0_Acc_Inst_EnumV" } data = zillionUtil.select(hbase_database, "ci_status", Criteria) if data: operate_time = data[0]["operate_time"] return operate_time def datetimenow(): # 当前时间 datetimenow = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") datetimenow = datetime.datetime.strptime(datetimenow, "%Y-%m-%d %H:%M:%S") return datetimenow #容器里python获取时间少8小时 # tz = pytz.timezone('Asia/Shanghai') #东八区 # datetimenow = datetime.datetime.fromtimestamp(int(time.time()), # pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') # 读取配置文件信息 with open("config.json", "r") as f: data = json.load(f) hbase_database = data["metadata"]["database"] url = data["metadata"]["url"] buildingid = data["building"]["id"] dingding = data["building"]["dingding"] #报警未恢复之前不再报警 alarms = {} while True: try: # #连接hbase zillionUtil = ZillionUtil(url) operate_time = select(hbase_database,buildingid) if operate_time: operate_time = datetime.datetime.strptime(operate_time,"%Y%m%d%H%M%S") if datetimenow() > operate_time: value = (datetimenow() - operate_time).seconds print(datetimenow(),operate_time,value) if int(value) > 7200: if not alarms: message = "【之江实验室】项目超过2小时未计算, 最新的计算操作时间: %s"%operate_time print(message) send_message(message,dingding) alarms[datetimenow()]=message else: print("%s,已经产生报警,报警还未恢复"%datetimenow()) else: alarms.clear() print("%s,OK"%datetimenow()) else: alarms.clear() print(datetimenow(), operate_time, "............") print("%s,OK" % datetimenow()) else: if not alarms: message = "【之江实验室】计算里没有查到%s的id"%buildingid print(message) send_message(message, dingding) alarms[datetimenow()] = message else: print("%s,已经产生报警,报警还未恢复" % datetimenow()) except Exception as e: print(e) time.sleep(300)