redis_data_monitor.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import datetime
  2. from config import set_config
  3. from utils import RedisHelper, send_msg_to_feishu
  4. from log import Log
  5. config_, _ = set_config()
  6. log_ = Log()
  7. redis_helper = RedisHelper()
  8. region_code = {
  9. '河北省': '130000',
  10. '山西省': '140000',
  11. '辽宁省': '210000',
  12. '吉林省': '220000',
  13. '黑龙江省': '230000',
  14. '江苏省': '320000',
  15. '浙江省': '330000',
  16. '安徽省': '340000',
  17. '福建省': '350000',
  18. '江西省': '360000',
  19. '山东省': '370000',
  20. '河南省': '410000',
  21. '湖北省': '420000',
  22. '湖南省': '430000',
  23. '广东省': '440000',
  24. '海南省': '460000',
  25. '四川省': '510000',
  26. '贵州省': '520000',
  27. '云南省': '530000',
  28. '陕西省': '610000',
  29. '甘肃省': '620000',
  30. '青海省': '630000',
  31. '台湾省': '710000',
  32. '北京': '110000',
  33. '天津': '120000',
  34. '内蒙古': '150000',
  35. '上海': '310000',
  36. '广西': '450000',
  37. '重庆': '500000',
  38. '西藏': '540000',
  39. '宁夏': '640000',
  40. '新疆': '650000',
  41. '香港': '810000',
  42. '澳门': '820000',
  43. 'None': '-1'
  44. }
  45. def get_redis_data_keys(now_date, now_h):
  46. # 检查所需列表是否已更新好
  47. redis_data_keys = []
  48. # rov模型预测列表
  49. if now_h > 6:
  50. rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX}{now_date}"
  51. redis_data_keys.append(rov_key_name)
  52. # 地域分组小时级列表
  53. rule_params = config_.RULE_PARAMS_REGION
  54. key_prefix_list = [
  55. config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H,
  56. config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H,
  57. config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H,
  58. config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_H
  59. ]
  60. region_code_list = [code for region, code in region_code.items()]
  61. for rule_key, _ in rule_params.items():
  62. for region in region_code_list:
  63. if region == '-1':
  64. region_key_name = [f"{key_prefix_list[-1]}{region}.{rule_key}.{now_date}.{now_h}"]
  65. else:
  66. region_key_name = [f"{key_prefix}{region}.{rule_key}.{now_date}.{now_h}"
  67. for key_prefix in key_prefix_list]
  68. redis_data_keys.extend(region_key_name)
  69. return redis_data_keys
  70. def monitor(now_date, now_h):
  71. redis_data_keys = get_redis_data_keys(now_date=now_date, now_h=now_h)
  72. log_.info(f"redis_data_keys = {redis_data_keys}")
  73. for key_name in redis_data_keys:
  74. if not redis_helper.key_exists(key_name=key_name):
  75. msg_text = f"{config_.ENV_TEXT} —— now_date = {now_date}, now_h = {now_h}, key = {key_name}, " \
  76. f"数据未按时更新,请及时查看解决。"
  77. log_.info(f"msg_text = {msg_text}")
  78. send_msg_to_feishu(
  79. webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
  80. key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
  81. msg_text=msg_text
  82. )
  83. if __name__ == '__main__':
  84. now_date = datetime.datetime.today().strftime('%Y%m%d')
  85. now_h = datetime.datetime.now().hour
  86. log_.info(f"now_date = {now_date}, now_h = {now_h}")
  87. monitor(now_date=now_date, now_h=now_h)
  88. log_.info("end!")