|
@@ -1199,7 +1199,11 @@ class PoolRecall(object):
|
|
|
# else:
|
|
|
# t = [gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size, 'region_24h'),
|
|
|
# gevent.spawn(self.region_dup_recall, province_code, 2, size, expire_time)]
|
|
|
- if self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1'):
|
|
|
+
|
|
|
+ # if self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1'):
|
|
|
+ if self.ab_code in [config_.AB_CODE['region_rank_by_h'].get('region_rule_rank5_appType_0_data1'),
|
|
|
+ config_.AB_CODE['region_rank_by_h'].get('abtest_112')]:
|
|
|
+
|
|
|
if province_code == '-1':
|
|
|
t = [
|
|
|
# gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size, 'day_24h'),
|
|
@@ -1777,6 +1781,7 @@ class PoolRecall(object):
|
|
|
last_video_key_prefix=last_video_key_prefix)
|
|
|
if not pool_key:
|
|
|
return []
|
|
|
+ recall_data = []
|
|
|
pool_recall_result = []
|
|
|
# 每次获取的视频数
|
|
|
get_size = size * 5
|
|
@@ -1797,6 +1802,7 @@ class PoolRecall(object):
|
|
|
'data': data})
|
|
|
if not data:
|
|
|
break
|
|
|
+ recall_data.extend(data)
|
|
|
# 获取视频id,并转换类型为int,并存储为key-value{videoId: score}
|
|
|
video_ids = []
|
|
|
video_score = {}
|
|
@@ -1811,6 +1817,13 @@ class PoolRecall(object):
|
|
|
ge.join()
|
|
|
filtered_result = ge.get()
|
|
|
|
|
|
+ # debug
|
|
|
+ if freq == 1 and key_flag == '24h_dup3':
|
|
|
+ filtered_result = filtered_result[:3]
|
|
|
+ if freq == 2:
|
|
|
+ filtered_result = []
|
|
|
+ # ###
|
|
|
+
|
|
|
if filtered_result:
|
|
|
# 添加视频源参数 pushFrom, abCode
|
|
|
temp_result = [{'videoId': int(item), 'rovScore': video_score[int(item)],
|
|
@@ -1819,7 +1832,7 @@ class PoolRecall(object):
|
|
|
pool_recall_result.extend(temp_result)
|
|
|
else:
|
|
|
# 将此次获取的末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
|
|
|
- if self.mid:
|
|
|
+ if self.mid and self.ab_code != config_.AB_CODE['region_rank_by_h'].get('abtest_112'):
|
|
|
# mid为空时,不做记录
|
|
|
last_video_key = f'{last_video_key_prefix}{self.app_type}:{self.mid}'
|
|
|
self.redis_helper.set_data_to_redis(key_name=last_video_key, value=data[-1][0],
|
|
@@ -1828,6 +1841,13 @@ class PoolRecall(object):
|
|
|
|
|
|
pool_recall_result.sort(key=lambda x: x.get('rovScore', 0), reverse=True)
|
|
|
|
|
|
+ if len(recall_data) > 0 and len(pool_recall_result) == 0 \
|
|
|
+ and self.ab_code == config_.AB_CODE['region_rank_by_h'].get('abtest_112') and self.mid:
|
|
|
+ # 召回数据不为空 & 过滤后结果为空 & 位于实验组 & mid不为空时,更新召回获取的末位视频id记录到定位的key中
|
|
|
+ last_video_key = f'{last_video_key_prefix}{self.app_type}:{self.mid}'
|
|
|
+ self.redis_helper.set_data_to_redis(key_name=last_video_key, value=recall_data[-1][0],
|
|
|
+ expire_time=expire_time)
|
|
|
+
|
|
|
log_.info({
|
|
|
'logTimestamp': int(time.time() * 1000),
|
|
|
'request_id': self.request_id,
|