|
@@ -3935,48 +3935,54 @@ class PoolRecall(object):
|
|
|
return region_code
|
|
|
|
|
|
def recall_strategy_trend_v1(self):
|
|
|
- #1 获取trigger信息
|
|
|
- region_code_province = self.client_info.get('provinceCode', '-1')
|
|
|
- #2 拼接redis key
|
|
|
- key1 = "alg_recsys_recall_4h_region_trend_sum_" + region_code_province
|
|
|
- key2 = "alg_recsys_recall_4h_region_trend_avg_" + region_code_province
|
|
|
- #3 取数据
|
|
|
- data1 = self.redis_helper.get_data_from_redis(key_name=key1)
|
|
|
- data2 = self.redis_helper.get_data_from_redis(key_name=key2)
|
|
|
- data_for_filter = []
|
|
|
- group_size = 20
|
|
|
- if data1 is not None and not "" == data1:
|
|
|
- # todo 类型转换没做兜底
|
|
|
- data1_list = [int(i) for i in data1.split(",")]
|
|
|
- data_for_filter.extend([data1_list[i:i + group_size] for i in range(0, len(data1_list), group_size)])
|
|
|
- else:
|
|
|
- data1_list = []
|
|
|
- if data2 is not None and not "" == data2:
|
|
|
- # todo 类型转换没做兜底
|
|
|
- data2_list = [int(i) for i in data2.split(",")]
|
|
|
- data2_list = [i for i in data2_list if i not in data1_list]
|
|
|
- if len(data2_list) > 0:
|
|
|
- data_for_filter.extend([data2_list[i:i + group_size] for i in range(0, len(data2_list), group_size)])
|
|
|
- data_for_filter = [i for i in data_for_filter if len(i) > 0]
|
|
|
- #4 视频过滤
|
|
|
- filter_ = FilterVideos(request_id=self.request_id,
|
|
|
- app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=None,
|
|
|
- expansion_factor=self.expansion_factor,
|
|
|
- risk_filter_flag=self.risk_filter_flag,
|
|
|
- app_region_filtered=self.app_region_filtered,
|
|
|
- videos_with_risk=self.videos_with_risk
|
|
|
- )
|
|
|
- region_code = self.get_region_code()
|
|
|
- t = [gevent.spawn(filter_.filter_videos_for_group, region_code, videos) for videos in data_for_filter]
|
|
|
- gevent.joinall(t)
|
|
|
- result_list = [i.get() for i in t if i.get() is not None and len(i.get()) > 0]
|
|
|
- #5 返回结果
|
|
|
- results = []
|
|
|
- for g in result_list:
|
|
|
- for v in g:
|
|
|
- results.append({
|
|
|
- 'videoId': v, 'flowPool': '',
|
|
|
- 'rovScore': 0.0, 'pushFrom': config_.PUSH_FROM['recall_strategy_trend_v1'],
|
|
|
- 'abCode': self.ab_code
|
|
|
- })
|
|
|
- return results
|
|
|
+ try:
|
|
|
+ # 1 获取trigger信息
|
|
|
+ region_code_province = self.client_info.get('provinceCode', '-1')
|
|
|
+ # 2 拼接redis key
|
|
|
+ key1 = "alg_recsys_recall_4h_region_trend_sum_" + region_code_province
|
|
|
+ key2 = "alg_recsys_recall_4h_region_trend_avg_" + region_code_province
|
|
|
+ # 3 取数据
|
|
|
+ data1 = self.redis_helper.get_data_from_redis(key_name=key1)
|
|
|
+ data2 = self.redis_helper.get_data_from_redis(key_name=key2)
|
|
|
+ data_for_filter = []
|
|
|
+ group_size = 20
|
|
|
+ if data1 is not None and not "" == data1:
|
|
|
+ # todo 类型转换没做兜底
|
|
|
+ data1_list = [int(i) for i in data1.split(",")]
|
|
|
+ data_for_filter.extend([data1_list[i:i + group_size] for i in range(0, len(data1_list), group_size)])
|
|
|
+ else:
|
|
|
+ data1_list = []
|
|
|
+ if data2 is not None and not "" == data2:
|
|
|
+ # todo 类型转换没做兜底
|
|
|
+ data2_list = [int(i) for i in data2.split(",")]
|
|
|
+ data2_list = [i for i in data2_list if i not in data1_list]
|
|
|
+ if len(data2_list) > 0:
|
|
|
+ data_for_filter.extend(
|
|
|
+ [data2_list[i:i + group_size] for i in range(0, len(data2_list), group_size)])
|
|
|
+ data_for_filter = [i for i in data_for_filter if len(i) > 0]
|
|
|
+ # 4 视频过滤
|
|
|
+ filter_ = FilterVideos(request_id=self.request_id,
|
|
|
+ app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=None,
|
|
|
+ expansion_factor=self.expansion_factor,
|
|
|
+ risk_filter_flag=self.risk_filter_flag,
|
|
|
+ app_region_filtered=self.app_region_filtered,
|
|
|
+ videos_with_risk=self.videos_with_risk
|
|
|
+ )
|
|
|
+ region_code = self.get_region_code()
|
|
|
+ t = [gevent.spawn(filter_.filter_videos_for_group, region_code, videos) for videos in data_for_filter]
|
|
|
+ gevent.joinall(t)
|
|
|
+ result_list = [i.get() for i in t if i.get() is not None and len(i.get()) > 0]
|
|
|
+ # 5 返回结果
|
|
|
+ results = []
|
|
|
+ for g in result_list:
|
|
|
+ for v in g:
|
|
|
+ results.append({
|
|
|
+ 'videoId': v, 'flowPool': '',
|
|
|
+ 'rovScore': 0.0, 'pushFrom': config_.PUSH_FROM['recall_strategy_trend_v1'],
|
|
|
+ 'abCode': self.ab_code
|
|
|
+ })
|
|
|
+ return results
|
|
|
+ except Exception as e:
|
|
|
+ log_.error("error in recall_strategy_trend_v1:{}".format(e))
|
|
|
+ return []
|
|
|
+
|