| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- import datetime
 
- from config import set_config
 
- from utils import RedisHelper, send_msg_to_feishu
 
- from log import Log
 
- config_, _ = set_config()
 
- log_ = Log()
 
- redis_helper = RedisHelper()
 
- region_code = config_.REGION_CODE
 
- def rov_data_monitor(now_date, now_h):
 
-     """rov模型预测列表"""
 
-     if now_h > 6:
 
-         rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX}{now_date}"
 
-         if not redis_helper.key_exists(key_name=rov_key_name):
 
-             msg_text = f"\n- 所属项目: rov-server/rov-offline" \
 
-                        f"\n- 告警名称: 离线更新数据未按时更新告警" \
 
-                        f"\n- 所属环境: {config_.ENV_TEXT}" \
 
-                        f"\n- now_date: {now_date}" \
 
-                        f"\n- now_h: {now_h}" \
 
-                        f"\n- 告警描述: rov模型预测列表数据未按时更新"
 
-             log_.info(f"msg_text = {msg_text}")
 
-             send_msg_to_feishu(
 
-                 webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
 
-                 key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
 
-                 msg_text=msg_text
 
-             )
 
- def region_data_monitor(now_date, now_h, rule_params, key_prefix_dict):
 
-     """地域分组数据"""
 
-     region_code_list = [code for region, code in region_code.items()]
 
-     for param in rule_params.get('params_list'):
 
-         data_key = param.get('data')
 
-         rule_key = param.get('rule')
 
-         for key_con, key_prefix in key_prefix_dict.items():
 
-             
 
-             
 
-             no_update_region_list = []
 
-             for region in region_code_list:
 
-                 region_key_name = f"{key_prefix}{region}:{data_key}:{rule_key}:{now_date}:{now_h}"
 
-                 if not redis_helper.key_exists(key_name=region_key_name):
 
-                     no_update_region_list.append(region)
 
-             if len(no_update_region_list) == len(region_code_list):
 
-                 msg_text = f"\n- 所属项目: rov-server/rov-offline" \
 
-                            f"\n- 告警名称: 离线更新数据未按时更新告警" \
 
-                            f"\n- 所属环境: {config_.ENV_TEXT}" \
 
-                            f"\n- now_date: {now_date}" \
 
-                            f"\n- now_h: {now_h}" \
 
-                            f"\n- 告警描述: {key_con}未按时更新, data_key={data_key}, rule_key={rule_key}"
 
-                 log_.info(f"msg_text = {msg_text}")
 
-                 send_msg_to_feishu(
 
-                     webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
 
-                     key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
 
-                     msg_text=msg_text
 
-                 )
 
- def special_videos_monitor(now_date, now_h):
 
-     """特殊mid(屏蔽名单)指定视频列表"""
 
-     if now_h > 4:
 
-         rov_key_name = f"{config_.KEY_NAME_PREFIX_SPECIAL_VIDEOS}{now_date}"
 
-         if not redis_helper.key_exists(key_name=rov_key_name):
 
-             msg_text = f"\n- 所属项目: rov-server/rov-offline" \
 
-                        f"\n- 告警名称: 离线更新数据未按时更新告警" \
 
-                        f"\n- 所属环境: {config_.ENV_TEXT}" \
 
-                        f"\n- now_date: {now_date}" \
 
-                        f"\n- now_h: {now_h}" \
 
-                        f"\n- 告警描述: 特殊mid(屏蔽名单)指定视频列表数据未按时更新"
 
-             log_.info(f"msg_text = {msg_text}")
 
-             send_msg_to_feishu(
 
-                 webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
 
-                 key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
 
-                 msg_text=msg_text
 
-             )
 
- def whole_movies_monitor(now_date, now_h):
 
-     """完整影视资源列表"""
 
-     rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX_WHOLE_MOVIES}{now_date}.{now_h}"
 
-     if not redis_helper.key_exists(key_name=rov_key_name):
 
-         msg_text = f"\n- 所属项目: rov-server/rov-offline" \
 
-                    f"\n- 告警名称: 离线更新数据未按时更新告警" \
 
-                    f"\n- 所属环境: {config_.ENV_TEXT}" \
 
-                    f"\n- now_date: {now_date}" \
 
-                    f"\n- now_h: {now_h}" \
 
-                    f"\n- 告警描述: 完整影视资源列表数据未按时更新"
 
-         log_.info(f"msg_text = {msg_text}")
 
-         send_msg_to_feishu(
 
-             webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
 
-             key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
 
-             msg_text=msg_text
 
-         )
 
- def get_redis_data_keys(now_date, now_h):
 
-     
 
-     redis_data_keys = []
 
-     
 
-     if now_h > 6:
 
-         rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX}{now_date}"
 
-         redis_data_keys.append(rov_key_name)
 
-     
 
-     rule_params = config_.RULE_PARAMS_REGION_APP_TYPE
 
-     key_prefix_list = [
 
-         config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H,
 
-         config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H,
 
-         config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H,
 
-         config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_H
 
-     ]
 
-     region_code_list = [code for region, code in region_code.items()]
 
-     for app_type, params in rule_params.items():
 
-         for data_key, data_param in params['data_params'].items():
 
-             for rule_key, rule_param in params['rule_params'].items():
 
-                 for region in region_code_list:
 
-                     if region == '-1':
 
-                         region_key_name = [f"{key_prefix_list[-1]}{region}.{app_type}.{data_key}.{rule_key}.{now_date}.{now_h}"]
 
-                     else:
 
-                         region_key_name = [f"{key_prefix}{region}.{app_type}.{data_key}.{rule_key}.{now_date}.{now_h}"
 
-                                            for key_prefix in key_prefix_list]
 
-                     redis_data_keys.extend(region_key_name)
 
-     return redis_data_keys
 
- def monitor(now_date, now_h):
 
-     
 
-     key_prefix_dict_24h = {
 
-         '地域分组小时级数据': config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H,
 
-         '地域分组相对24h去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H,
 
-         '不区分地域相对24h去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H,
 
-         '不区分地域相对24h筛选后剩余去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H,
 
-         
 
-     }
 
-     region_data_monitor(now_date=now_date, now_h=now_h, rule_params=config_.RULE_PARAMS_REGION_APP_TYPE,
 
-                         key_prefix_dict=key_prefix_dict_24h)
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     
 
-     special_videos_monitor(now_date=now_date, now_h=now_h)
 
-     
 
- if __name__ == '__main__':
 
-     now_date = datetime.datetime.today().strftime('%Y%m%d')
 
-     now_h = datetime.datetime.now().hour
 
-     log_.info(f"now_date = {now_date}, now_h = {now_h}")
 
-     monitor(now_date=now_date, now_h=now_h)
 
-     log_.info("end!")
 
 
  |