|
@@ -216,11 +216,13 @@ def video_rank(df, now_date, now_h, rule_key, param, region):
|
|
|
# if len(initial_data_dup) > 0:
|
|
|
# redis_helper.add_data_with_zset(key_name=initial_key_name, data=initial_data_dup, expire_time=23 * 3600)
|
|
|
|
|
|
+ region_24h_rule_key = param.get('region_24h_rule_key', 'rule1')
|
|
|
# 与其他召回视频池去重,存入对应的redis
|
|
|
- dup_to_redis(h_video_ids=h_video_ids, now_date=now_date, now_h=now_h, rule_key=rule_key, region=region)
|
|
|
+ dup_to_redis(h_video_ids=h_video_ids, now_date=now_date, now_h=now_h, rule_key=rule_key,
|
|
|
+ region_24h_rule_key=region_24h_rule_key, region=region)
|
|
|
|
|
|
|
|
|
-def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region):
|
|
|
+def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region_24h_rule_key, region):
|
|
|
"""将地域分组小时级数据与其他召回视频池去重,存入对应的redis"""
|
|
|
redis_helper = RedisHelper()
|
|
|
# # ##### 去重更新地域分组天级列表,并另存为redis中
|
|
@@ -245,7 +247,7 @@ def dup_to_redis(h_video_ids, now_date, now_h, rule_key, region):
|
|
|
|
|
|
# ##### 去重更新地域分组小时级24h列表,并另存为redis中
|
|
|
region_24h_key_name = \
|
|
|
- f"{config_.RECALL_KEY_NAME_PREFIX_REGION_BY_24H}{region}.rule1." \
|
|
|
+ f"{config_.RECALL_KEY_NAME_PREFIX_REGION_BY_24H}{region}.{region_24h_rule_key}." \
|
|
|
f"{datetime.datetime.strftime(now_date, '%Y%m%d')}.{now_h}"
|
|
|
if redis_helper.key_exists(key_name=region_24h_key_name):
|
|
|
region_24h_data = redis_helper.get_data_zset_with_index(
|
|
@@ -324,9 +326,10 @@ def rank_by_h(project, table, now_date, now_h, rule_params, region_code_list):
|
|
|
"score_df": score_df[['videoid', 'score']]})
|
|
|
|
|
|
|
|
|
-def h_rank_bottom(now_date, now_h, rule_key, region_code_list):
|
|
|
+def h_rank_bottom(now_date, now_h, rule_key, region_code_list, param):
|
|
|
"""未按时更新数据,用上一小时结果作为当前小时的数据"""
|
|
|
log_.info(f"rule_key = {rule_key}")
|
|
|
+ region_24h_rule_key = param.get('region_24h_rule_key', 'rule1')
|
|
|
# 获取rov模型结果
|
|
|
redis_helper = RedisHelper()
|
|
|
if now_h == 0:
|
|
@@ -364,7 +367,8 @@ def h_rank_bottom(now_date, now_h, rule_key, region_code_list):
|
|
|
# 清空线上过滤应用列表
|
|
|
redis_helper.del_keys(key_name=f"{config_.REGION_H_VIDEO_FILER}{region}.{rule_key}")
|
|
|
# 与其他召回视频池去重,存入对应的redis
|
|
|
- dup_to_redis(h_video_ids=h_video_ids, now_date=now_date, now_h=now_h, rule_key=rule_key, region=region)
|
|
|
+ dup_to_redis(h_video_ids=h_video_ids, now_date=now_date, now_h=now_h,
|
|
|
+ rule_key=rule_key, region_24h_rule_key=region_24h_rule_key, region=region)
|
|
|
|
|
|
|
|
|
def h_timer_check():
|
|
@@ -377,8 +381,8 @@ def h_timer_check():
|
|
|
now_h = datetime.datetime.now().hour
|
|
|
now_min = datetime.datetime.now().minute
|
|
|
if now_h == 0:
|
|
|
- for key, _ in rule_params.items():
|
|
|
- h_rank_bottom(now_date=now_date, now_h=now_h, rule_key=key, region_code_list=region_code_list)
|
|
|
+ for key, value in rule_params.items():
|
|
|
+ h_rank_bottom(now_date=now_date, now_h=now_h, rule_key=key, region_code_list=region_code_list, param=value)
|
|
|
return
|
|
|
# 查看当前小时更新的数据是否已准备好
|
|
|
h_data_count = h_data_check(project=project, table=table, now_date=now_date)
|
|
@@ -389,8 +393,8 @@ def h_timer_check():
|
|
|
project=project, table=table, region_code_list=region_code_list)
|
|
|
elif now_min > 50:
|
|
|
log_.info('h_recall data is None, use bottom data!')
|
|
|
- for key, _ in rule_params.items():
|
|
|
- h_rank_bottom(now_date=now_date, now_h=now_h, rule_key=key, region_code_list=region_code_list)
|
|
|
+ for key, value in rule_params.items():
|
|
|
+ h_rank_bottom(now_date=now_date, now_h=now_h, rule_key=key, region_code_list=region_code_list, param=value)
|
|
|
else:
|
|
|
# 数据没准备好,1分钟后重新检查
|
|
|
Timer(60, h_timer_check).start()
|