瀏覽代碼

trend召回

zhangbo 1 年之前
父節點
當前提交
e4e0ab748f
共有 1 個文件被更改,包括 51 次插入45 次删除
  1. 51 45
      video_recall.py

+ 51 - 45
video_recall.py

@@ -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 []
+