|
@@ -315,7 +315,7 @@ class PoolRecall(object):
|
|
|
|
|
|
def get_video_last_idx(self):
|
|
def get_video_last_idx(self):
|
|
"""获取用户上一次在rov召回池对应的位置"""
|
|
"""获取用户上一次在rov召回池对应的位置"""
|
|
- if self.ab_code == config_.AB_CODE['rank_by_h']:
|
|
|
|
|
|
+ if self.ab_code == config_.AB_CODE['rank_by_h'] or self.app_type == config_.APP_TYPE['APP']:
|
|
rov_pool_key, redis_date = self.get_pool_redis_key_with_h('rov')
|
|
rov_pool_key, redis_date = self.get_pool_redis_key_with_h('rov')
|
|
else:
|
|
else:
|
|
rov_pool_key, redis_date = self.get_pool_redis_key('rov')
|
|
rov_pool_key, redis_date = self.get_pool_redis_key('rov')
|
|
@@ -456,24 +456,42 @@ class PoolRecall(object):
|
|
if pool_type == 'rov':
|
|
if pool_type == 'rov':
|
|
# 获取当前所在小时
|
|
# 获取当前所在小时
|
|
h = datetime.now().hour
|
|
h = datetime.now().hour
|
|
- # 判断热度列表是否更新,未更新则使用前一小时的热度列表
|
|
|
|
- key_name = '{}{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, h)
|
|
|
|
- if self.redis_helper.key_exists(key_name):
|
|
|
|
- return key_name, h
|
|
|
|
|
|
+
|
|
|
|
+ # appType = 13, 票圈视频APP
|
|
|
|
+ if self.app_type == config_.APP_TYPE['APP']:
|
|
|
|
+ now_date = date.today().strftime('%Y%m%d')
|
|
|
|
+ key_name = f'{config_.APP_FINAL_RECALL_KEY_NAME_PREFIX}{now_date}.{h}'
|
|
|
|
+ if self.redis_helper.key_exists(key_name):
|
|
|
|
+ return key_name, h
|
|
|
|
+ else:
|
|
|
|
+ if h == 0:
|
|
|
|
+ redis_h = 23
|
|
|
|
+ redis_date = (date.today() - timedelta(days=1)).strftime('%Y%m%d')
|
|
|
|
+ else:
|
|
|
|
+ redis_h = h - 1
|
|
|
|
+ redis_date = now_date
|
|
|
|
+ key_name = f'{config_.APP_FINAL_RECALL_KEY_NAME_PREFIX}{redis_date}.{redis_h}'
|
|
|
|
+ return key_name, h
|
|
|
|
+
|
|
else:
|
|
else:
|
|
- if h == 0:
|
|
|
|
- redis_h = 23
|
|
|
|
|
|
+ # 判断热度列表是否更新,未更新则使用前一小时的热度列表
|
|
|
|
+ key_name = '{}{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, h)
|
|
|
|
+ if self.redis_helper.key_exists(key_name):
|
|
|
|
+ return key_name, h
|
|
else:
|
|
else:
|
|
- redis_h = h - 1
|
|
|
|
- key_name = '{}{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, redis_h)
|
|
|
|
- # 判断当前时间是否晚于数据正常更新时间,发送消息到飞书
|
|
|
|
- now_m = datetime.now().minute
|
|
|
|
- feishu_text = '{} —— appType = {}, h = {} 数据未按时更新,请及时查看解决。'.format(
|
|
|
|
- config_.ENV_TEXT, self.app_type, h)
|
|
|
|
- if now_m > config_.ROV_UPDATE_MINUTE_6 and h > 0:
|
|
|
|
- # h=0时,因数据首次更新耗时长,不做报警
|
|
|
|
- send_msg_to_feishu(feishu_text)
|
|
|
|
- return key_name, redis_h
|
|
|
|
|
|
+ if h == 0:
|
|
|
|
+ redis_h = 23
|
|
|
|
+ else:
|
|
|
|
+ redis_h = h - 1
|
|
|
|
+ key_name = '{}{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, redis_h)
|
|
|
|
+ # 判断当前时间是否晚于数据正常更新时间,发送消息到飞书
|
|
|
|
+ now_m = datetime.now().minute
|
|
|
|
+ feishu_text = '{} —— appType = {}, h = {} 数据未按时更新,请及时查看解决。'.format(
|
|
|
|
+ config_.ENV_TEXT, self.app_type, h)
|
|
|
|
+ if now_m > config_.ROV_UPDATE_MINUTE_6 and h > 0:
|
|
|
|
+ # h=0时,因数据首次更新耗时长,不做报警
|
|
|
|
+ send_msg_to_feishu(feishu_text)
|
|
|
|
+ return key_name, redis_h
|
|
|
|
|
|
elif pool_type == 'flow':
|
|
elif pool_type == 'flow':
|
|
return config_.FLOW_POOL_KEY_NAME_PREFIX + str(self.app_type)
|
|
return config_.FLOW_POOL_KEY_NAME_PREFIX + str(self.app_type)
|