|
@@ -7,6 +7,7 @@
|
|
|
import multiprocessing
|
|
|
import os
|
|
|
import sys
|
|
|
+import traceback
|
|
|
|
|
|
import gevent
|
|
|
import datetime
|
|
@@ -16,7 +17,7 @@ from functools import reduce
|
|
|
from odps import ODPS
|
|
|
from threading import Timer, Thread
|
|
|
from utils import MysqlHelper, RedisHelper, get_data_from_odps, filter_video_status, filter_shield_video, \
|
|
|
- check_table_partition_exits, filter_video_status_app
|
|
|
+ check_table_partition_exits, filter_video_status_app, send_msg_to_feishu
|
|
|
from config import set_config
|
|
|
from log import Log
|
|
|
from check_video_limit_distribute import update_limit_video_score
|
|
@@ -714,38 +715,55 @@ def h_rank_bottom(now_date, now_h, rule_params, region_code_list, rule_rank_h_fl
|
|
|
|
|
|
|
|
|
def h_timer_check():
|
|
|
- rule_rank_h_flag = sys.argv[1]
|
|
|
- if rule_rank_h_flag == '48h':
|
|
|
- rule_params = config_.RULE_PARAMS_REGION_APP_TYPE_48H
|
|
|
- else:
|
|
|
- rule_params = config_.RULE_PARAMS_REGION_APP_TYPE
|
|
|
- project = config_.PROJECT_REGION_APP_TYPE
|
|
|
- table = config_.TABLE_REGION_APP_TYPE
|
|
|
- region_code_list = [code for region, code in region_code.items()]
|
|
|
- now_date = datetime.datetime.today()
|
|
|
- log_.info(f"now_date: {datetime.datetime.strftime(now_date, '%Y%m%d%H')}, rule_rank_h_flag: {rule_rank_h_flag}")
|
|
|
- now_h = datetime.datetime.now().hour
|
|
|
- now_min = datetime.datetime.now().minute
|
|
|
- if now_h == 0:
|
|
|
- h_rank_bottom(now_date=now_date, now_h=now_h, rule_params=rule_params, region_code_list=region_code_list,
|
|
|
- rule_rank_h_flag=rule_rank_h_flag)
|
|
|
- return
|
|
|
- # 查看当前小时更新的数据是否已准备好
|
|
|
- h_data_count = h_data_check(project=project, table=table, now_date=now_date)
|
|
|
- if h_data_count > 0:
|
|
|
- log_.info(f'region_h_data_count = {h_data_count}')
|
|
|
- # 数据准备好,进行更新
|
|
|
- rank_by_h(now_date=now_date, now_h=now_h, rule_params=rule_params,
|
|
|
- project=project, table=table, region_code_list=region_code_list, rule_rank_h_flag=rule_rank_h_flag)
|
|
|
- log_.info(f"region_h_data end!")
|
|
|
- elif now_min > 50:
|
|
|
- log_.info('h_recall data is None, use bottom data!')
|
|
|
- h_rank_bottom(now_date=now_date, now_h=now_h, rule_params=rule_params, region_code_list=region_code_list,
|
|
|
- rule_rank_h_flag=rule_rank_h_flag)
|
|
|
- log_.info(f"region_h_data end!")
|
|
|
- else:
|
|
|
- # 数据没准备好,1分钟后重新检查
|
|
|
- Timer(60, h_timer_check).start()
|
|
|
+ try:
|
|
|
+ rule_rank_h_flag = sys.argv[1]
|
|
|
+ if rule_rank_h_flag == '48h':
|
|
|
+ rule_params = config_.RULE_PARAMS_REGION_APP_TYPE_48H
|
|
|
+ else:
|
|
|
+ rule_params = config_.RULE_PARAMS_REGION_APP_TYPE
|
|
|
+ project = config_.PROJECT_REGION_APP_TYPE
|
|
|
+ table = config_.TABLE_REGION_APP_TYPE
|
|
|
+ region_code_list = [code for region, code in region_code.items()]
|
|
|
+ now_date = datetime.datetime.today()
|
|
|
+ log_.info(f"now_date: {datetime.datetime.strftime(now_date, '%Y%m%d%H')}, rule_rank_h_flag: {rule_rank_h_flag}")
|
|
|
+ now_h = datetime.datetime.now().hour
|
|
|
+ now_min = datetime.datetime.now().minute
|
|
|
+ if now_h == 0:
|
|
|
+ h_rank_bottom(now_date=now_date, now_h=now_h, rule_params=rule_params, region_code_list=region_code_list,
|
|
|
+ rule_rank_h_flag=rule_rank_h_flag)
|
|
|
+ return
|
|
|
+ # 查看当前小时更新的数据是否已准备好
|
|
|
+ h_data_count = h_data_check(project=project, table=table, now_date=now_date)
|
|
|
+ if h_data_count > 0:
|
|
|
+ log_.info(f'region_h_data_count = {h_data_count}')
|
|
|
+ # 数据准备好,进行更新
|
|
|
+ rank_by_h(now_date=now_date, now_h=now_h, rule_params=rule_params,
|
|
|
+ project=project, table=table, region_code_list=region_code_list, rule_rank_h_flag=rule_rank_h_flag)
|
|
|
+ log_.info(f"region_h_data end!")
|
|
|
+ elif now_min > 50:
|
|
|
+ log_.info('h_recall data is None, use bottom data!')
|
|
|
+ h_rank_bottom(now_date=now_date, now_h=now_h, rule_params=rule_params, region_code_list=region_code_list,
|
|
|
+ rule_rank_h_flag=rule_rank_h_flag)
|
|
|
+ log_.info(f"region_h_data end!")
|
|
|
+ else:
|
|
|
+ # 数据没准备好,1分钟后重新检查
|
|
|
+ Timer(60, h_timer_check).start()
|
|
|
+ send_msg_to_feishu(
|
|
|
+ webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
|
|
|
+ key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
|
|
|
+ msg_text=f"rov-offline{config_.ENV_TEXT} - 推荐视频数据更新完成\n "
|
|
|
+ f"now_date: {datetime.datetime.strftime(now_date, '%Y%m%d%H')}\n"
|
|
|
+ f"now_h: {now_h}"
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ log_.error(f"地域分组小时级数据更新失败, exception: {e}, traceback: {traceback.format_exc()}")
|
|
|
+ send_msg_to_feishu(
|
|
|
+ webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
|
|
|
+ key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
|
|
|
+ msg_text=f"rov-offline{config_.ENV_TEXT} - 地域分组小时级数据更新失败\n "
|
|
|
+ f"exception: {e}\n "
|
|
|
+ f"traceback: {traceback.format_exc()}"
|
|
|
+ )
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|