Explorar el Código

Merge branch 'feature/zhangbo_filter' of algorithm/rov-server into master

zhangbo hace 1 año
padre
commit
25ad408422
Se han modificado 5 ficheros con 74 adiciones y 52 borrados
  1. 10 0
      app.py
  2. 4 4
      config.py
  3. 7 5
      recommend.py
  4. 23 9
      utils.py
  5. 30 34
      video_recall.py

+ 10 - 0
app.py

@@ -118,6 +118,7 @@ def homepage_recommend():
         versioncode = request_data.get('versionCode', 0)
         recommendsource = request_data.get('recommendSource', '0')
         sencetype = request_data.get('senceType', 0)
+        hotSenceType = request_data.get('hotSenceType', 0)
         recomTraceId=request_data.get('recomTraceId', "")
         env_dict = {}
         try:
@@ -129,8 +130,10 @@ def homepage_recommend():
             env_dict['machineinfo_platform'] = str(machineinfoPlatform)
             env_dict['recommendsource'] = str(recommendsource)
             env_dict['sencetype'] = int(sencetype)
+            env_dict['hotSenceType'] = int(hotSenceType)
             env_dict['recomTraceId'] = recomTraceId
             env_dict['recomInterface'] = "homepage"
+            env_dict['cityCode'] = client_info.get('cityCode', '-1')
         except:
             env_dict['app_type'] = 4
             env_dict['pagesource'] = str(pagesource)
@@ -140,8 +143,10 @@ def homepage_recommend():
             env_dict['machineinfo_platform'] = str(machineinfoPlatform)
             env_dict['recommendsource'] = str(recommendsource)
             env_dict['sencetype'] = sencetype
+            env_dict['hotSenceType'] = int(hotSenceType)
             env_dict['recomTraceId'] = recomTraceId
             env_dict['recomInterface'] = "homepage"
+            env_dict['cityCode'] = client_info.get('cityCode', '-1')
             log_.error("feature error",env_dict)
         params = Params(request_id=request_id)
         # size默认为10
@@ -248,6 +253,7 @@ def relevant_recommend():
         versioncode = request_data.get('versionCode', 0)
         recommendsource = request_data.get('recommendSource', '0')
         sencetype =  request_data.get('senceType', 0)
+        hotSenceType = request_data.get('hotSenceType', 0)
         recomTraceId = request_data.get('recomTraceId', "")
         env_dict = {}
         try:
@@ -259,9 +265,11 @@ def relevant_recommend():
             env_dict['machineinfo_platform'] = str(machineinfoPlatform)
             env_dict['recommendsource'] = str(recommendsource)
             env_dict['sencetype'] = int(sencetype)
+            env_dict['hotSenceType'] = int(hotSenceType)
             env_dict['recomInterface'] = "relevant_recommend"
             env_dict['recomTraceId'] = recomTraceId
             env_dict['relevant_video_id'] = video_id
+            env_dict['cityCode'] = client_info.get('cityCode', '-1')
         except:
             env_dict['app_type'] = 4
             env_dict['pagesource'] = str(pagesource)
@@ -271,9 +279,11 @@ def relevant_recommend():
             env_dict['machineinfo_platform'] = str(machineinfoPlatform)
             env_dict['recommendsource'] = str(recommendsource)
             env_dict['sencetype'] = sencetype
+            env_dict['hotSenceType'] = int(hotSenceType)
             env_dict['recomInterface'] = "relevant_recommend"
             env_dict['relevant_video_id'] = video_id
             env_dict['recomTraceId'] = recomTraceId
+            env_dict['cityCode'] = client_info.get('cityCode', '-1')
             log_.error("feature error", env_dict)
         params = Params(request_id=request_id)
         recommend_result = video_relevant_recommend(

+ 4 - 4
config.py

@@ -989,10 +989,10 @@ class BaseConfig(object):
 
     # 调用后端接口过滤参数配置 1-已观看 2-视频状态 3-是否进入老年人社区 4-话题状态 5-推荐状态 6-白名单过滤 7-涉政视频过滤
     FILTER_VIEWED_TYPES_CONFIG = {
-        APP_TYPE['VLOG']: (1, 6,),  # vlog
-        APP_TYPE['LOVE_LIVE']: (1, 6,),  # 票圈视频
-        APP_TYPE['APP']: (1,),  # 票圈视频APP
-        'other': (1, 6, 7,),  # 其他
+        APP_TYPE['VLOG']: (1, 6, 8,),  # vlog
+        APP_TYPE['LOVE_LIVE']: (1, 6, 8,),  # 票圈视频
+        APP_TYPE['APP']: (1, 8,),  # 票圈视频APP
+        'other': (1, 6, 7, 8,),  # 其他
     }
 
     # 召回池分发视频在流量池中存在,该视频是否进行本地分发数-1 开关,1-开/0-关

+ 7 - 5
recommend.py

@@ -142,7 +142,7 @@ def positon_duplicate(pos1_vids, pos2_vids, videos):
 def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, algo_type, client_info,
                     expire_time=24*3600, ab_code=config_.AB_CODE['initial'], rule_key='', data_key='',
                     no_op_flag=False, old_video_index=-1, video_id=None, params=None, rule_key_30day=None,
-                    shield_config=None, level_weight=None, flow_pool_abtest_group=None):
+                    shield_config=None, level_weight=None, flow_pool_abtest_group=None, env_dict=None):
     """
     首页线上推荐逻辑
     :param request_id: request_id
@@ -185,7 +185,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
                              app_type=app_type, mid=mid, uid=uid, ab_code=ab_code,
                              client_info=client_info, rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
                              params=params, rule_key_30day=rule_key_30day, shield_config=shield_config,
-                             video_id= video_id, level_weight=level_weight)
+                             video_id= video_id, level_weight=level_weight, env_dict=env_dict)
     # _, last_rov_recall_key, _ = pool_recall.get_video_last_idx()
     # # 小时级实验
     # if ab_code in [code for _, code in config_.AB_CODE['rank_by_h'].items()]:
@@ -488,7 +488,9 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
                              client_info=client_info, rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
                              params=params, rule_key_30day=rule_key_30day, shield_config=shield_config,
                              video_id=video_id, level_weight=level_weight,
-                             h_data_key=h_data_key, h_rule_key=h_rule_key)
+                             h_data_key=h_data_key, h_rule_key=h_rule_key,
+                             env_dict=env_dict
+                             )
 
     exp_config = pool_recall.get_sort_ab_codel_config()
     # 60054 全量: simrecall+融合排序
@@ -2042,7 +2044,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
                                  ab_code=ab_code, expire_time=expire_time, rule_key=rule_key, data_key=data_key,
                                  no_op_flag=no_op_flag, old_video_index=old_video_index, params=params,
                                  rule_key_30day=rule_key_30day, shield_config=shield_config, level_weight=level_weight,
-                                 flow_pool_abtest_group=flow_pool_abtest_group)
+                                 flow_pool_abtest_group=flow_pool_abtest_group, env_dict=env_dict)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,
@@ -2170,7 +2172,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
                                  expire_time=expire_time, rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
                                  old_video_index=old_video_index, video_id=video_id, params=params,
                                  rule_key_30day=rule_key_30day, shield_config=shield_config, level_weight=level_weight,
-                                 flow_pool_abtest_group=flow_pool_abtest_group)
+                                 flow_pool_abtest_group=flow_pool_abtest_group, env_dict=env_dict)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,

+ 23 - 9
utils.py

@@ -243,7 +243,9 @@ class FilterVideos(object):
                  risk_filter_flag=None,
                  app_region_filtered=None,
                  videos_with_risk=None,
-                 force_truncation=None):
+                 force_truncation=None,
+                 env_dict=None
+                 ):
         """
         初始化
         :param request_id: request_id
@@ -262,6 +264,7 @@ class FilterVideos(object):
         self.app_region_filtered = app_region_filtered
         self.videos_with_risk = videos_with_risk
         self.force_truncation = force_truncation
+        self.env_dict = env_dict
 
     def filter_video_status_h(self, video_ids, rule_key, data_key, ab_code, province_code, key_flag=''):
         """召回小时级更新的视频状态过滤"""
@@ -404,7 +407,7 @@ class FilterVideos(object):
 
         # 视频已曝光过滤
         st_viewed = time.time()
-        filtered_viewed_result = self.filter_video_viewed(video_ids=filtered_pre_result)
+        filtered_viewed_result = self.filter_video_viewed(video_ids=filtered_pre_result, region_code=region_code)
         # print("filtered_pre:", (time.time() - st_viewed) * 1000)
         # et_viewed = time.time()
         # log_.info({
@@ -516,7 +519,7 @@ class FilterVideos(object):
     #     filtered_videos = [int(temp[0]) for temp in data]
     #     return filtered_videos
 
-    def filter_video_viewed(self, video_ids, types=(1, 6,)):
+    def filter_video_viewed(self, video_ids, region_code, types=(1, 6,)):
         """
         调用后端接口过滤用户已观看视频
         :param video_ids: 视频id列表 type-list
@@ -528,14 +531,22 @@ class FilterVideos(object):
         types = config_.FILTER_VIEWED_TYPES_CONFIG.get(self.app_type, None)
         if types is None:
             types = config_.FILTER_VIEWED_TYPES_CONFIG.get('other')
+        try:
+            log_.info("cityCode:" + self.env_dict["cityCode"] if "cityCode" in self.env_dict else "-1")
+            log_.info("hotSenceType:" + str(self.env_dict and self.env_dict["hotSenceType"] if "hotSenceType" in self.env_dict else 0))
+        except Exception as e:
+            pass
         request_data = {"appType": self.app_type,
                         "mid": self.mid,
                         "uid": self.uid,
                         "types": list(types),
-                        "videoIds": video_ids}
+                        "videoIds": video_ids,
+                        "cityCode": self.env_dict["cityCode"] if self.env_dict and "cityCode" in self.env_dict else "-1",
+                        "hotSenceType": self.env_dict["hotSenceType"] if self.env_dict and "hotSenceType" in self.env_dict else 0
+                        }
         # print(request_data)
         # 调用http接口
-        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data, timeout=(0.1, 1))
+        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data, timeout=(0.2, 1))
 
         # print("result:", result)
         if result is None:
@@ -798,7 +809,7 @@ class FilterVideos(object):
 
         # 视频已曝光过滤
         st_viewed = time.time()
-        filtered_viewed_result = self.filter_video_viewed_status(video_ids=filtered_pre_result)
+        filtered_viewed_result = self.filter_video_viewed_status(video_ids=filtered_pre_result, region_code=region_code)
         # print("filtered_pre:", (time.time() - st_viewed) * 1000)
         # et_viewed = time.time()
         # log_.info({
@@ -846,7 +857,7 @@ class FilterVideos(object):
         #             return filtered_viewed_videos
         # else:
         #     return filtered_viewed_videos
-    def filter_video_viewed_status(self, video_ids, types=(1, 6,)):
+    def filter_video_viewed_status(self, video_ids, region_code, types=(1, 6,)):
         """
                    调用后端接口过滤用户已观看视频
                    :param video_ids: 视频id列表 type-list
@@ -864,10 +875,13 @@ class FilterVideos(object):
                         "mid": self.mid,
                         "uid": self.uid,
                         "types": types,
-                        "videoIds": video_ids}
+                        "videoIds": video_ids,
+                        "cityCode": self.env_dict["cityCode"] if self.env_dict and "cityCode" in self.env_dict else "-1",
+                        "hotSenceType": self.env_dict["hotSenceType"]  if self.env_dict and "hotSenceType" in self.env_dict else 0
+                        }
         # print(request_data)
         # 调用http接口
-        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data, timeout=(0.1, 1))
+        result = request_post(request_url=config_.VIDEO_FILTER_URL, request_data=request_data, timeout=(0.2, 1))
 
         # print("result:", result)
         if result is None:

+ 30 - 34
video_recall.py

@@ -23,7 +23,7 @@ class PoolRecall(object):
     """召回"""
     def __init__(self, request_id, app_type, client_info=None, mid='', uid='', ab_code='',
                  rule_key='', data_key='', no_op_flag=False, params=None, rule_key_30day=None, shield_config=None,
-                 video_id=None, level_weight=None, h_data_key=None, h_rule_key=None):
+                 video_id=None, level_weight=None, h_data_key=None, h_rule_key=None, env_dict=None):
         """
         初始化
         :param request_id: request_id
@@ -50,6 +50,7 @@ class PoolRecall(object):
         self.redis_helper = RedisHelper(params=params)
         self.h_data_key = data_key
         self.h_rule_key = h_rule_key
+        self.env_dict = env_dict
 
         self.expansion_factor = param_update_expansion_factor()
         self.risk_filter_flag = param_update_risk_filter_flag()
@@ -223,7 +224,7 @@ class PoolRecall(object):
                     video_score[video_id] = value[1]
                 # 过滤
                 filter_ = FilterVideos(request_id=self.request_id,
-                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
                 ge = gevent.spawn(filter_.filter_videos_h, self.rule_key, self.ab_code, province_code)
                 ge.join()
                 filtered_result = ge.get()
@@ -305,7 +306,7 @@ class PoolRecall(object):
                     video_score[video_id] = value[1]
                 # 过滤
                 filter_ = FilterVideos(request_id=self.request_id,
-                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
                 ge = gevent.spawn(filter_.filter_videos)
                 ge.join()
                 filtered_result = ge.get()
@@ -420,7 +421,7 @@ class PoolRecall(object):
                 video_score[video_id] = value[1]
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos)
             ge.join()
             filtered_result = ge.get()
@@ -536,7 +537,7 @@ class PoolRecall(object):
                                    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
+                                   videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                    )
             ge = gevent.spawn(filter_.filter_videos, pool_type='flow',
                               region_code=region_code, shield_config=self.shield_config)
@@ -662,7 +663,7 @@ class PoolRecall(object):
                     video_mapping[video_id].append(flow_pool)
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos, pool_type='flow',
                               region_code=region_code, shield_config=self.shield_config)
             ge.join()
@@ -797,7 +798,7 @@ class PoolRecall(object):
                                    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
+                                   videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                    )
             ge = gevent.spawn(filter_.filter_videos, pool_type='flow',
                               region_code=region_code, shield_config=self.shield_config)
@@ -938,7 +939,7 @@ class PoolRecall(object):
                     video_mapping[video_id].append(flow_pool)
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos, pool_type='flow',
                               region_code=region_code, shield_config=self.shield_config)
             ge.join()
@@ -1092,7 +1093,7 @@ class PoolRecall(object):
                                    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
+                                   videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                    )
             ge = gevent.spawn(filter_.filter_videos, pool_type='flow',
                               region_code=region_code, shield_config=self.shield_config)
@@ -1588,7 +1589,7 @@ class PoolRecall(object):
                 video_score[video_id] = value[1]
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, video_ids=video_ids, mid=self.mid, uid=self.uid)
+                                   app_type=self.app_type, video_ids=video_ids, mid=self.mid, uid=self.uid, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos)
             ge.join()
             filtered_result = ge.get()
@@ -1655,7 +1656,7 @@ class PoolRecall(object):
 
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, video_ids=video_ids, mid=self.mid, uid=self.uid)
+                                   app_type=self.app_type, video_ids=video_ids, mid=self.mid, uid=self.uid, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos)
             ge.join()
             filtered_result = ge.get()
@@ -1857,7 +1858,7 @@ class PoolRecall(object):
 
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos)
             ge.join()
             filtered_result = ge.get()
@@ -1952,7 +1953,7 @@ class PoolRecall(object):
         # 过滤
         old_video_ids = [int(video_id) for video_id in old_videos]
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, video_ids=old_video_ids, mid=self.mid, uid=self.uid)
+                               app_type=self.app_type, video_ids=old_video_ids, mid=self.mid, uid=self.uid, env_dict=self.env_dict)
         ge = gevent.spawn(filter_.filter_videos)
         ge.join()
         filtered_videos = ge.get()
@@ -2281,7 +2282,7 @@ class PoolRecall(object):
                     video_score[video_id] = value[1]
                 # 过滤
                 filter_ = FilterVideos(request_id=self.request_id,
-                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
                 ge = gevent.spawn(filter_.filter_videos_h, self.rule_key, self.data_key,
                                   self.ab_code, province_code, key_flag)
                 ge.join()
@@ -2349,7 +2350,7 @@ class PoolRecall(object):
                     video_score[video_id] = value[1]
                 # 过滤
                 filter_ = FilterVideos(request_id=self.request_id,
-                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
                 ge = gevent.spawn(filter_.filter_videos)
                 ge.join()
                 filtered_result = ge.get()
@@ -2461,7 +2462,7 @@ class PoolRecall(object):
                     video_score[video_id] = value[1]
                 # 过滤
                 filter_ = FilterVideos(request_id=self.request_id,
-                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                       app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
                 ge = gevent.spawn(filter_.filter_videos_h, self.rule_key, self.ab_code, '', key_flag)
                 ge.join()
                 filtered_result = ge.get()
@@ -2506,7 +2507,7 @@ class PoolRecall(object):
             video_ids.append(video_id)
             video_score[video_id] = value[1]
         # 过滤
-        filter_ = FilterVideos(request_id=self.request_id, app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+        filter_ = FilterVideos(request_id=self.request_id, app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         ge = gevent.spawn(filter_.filter_videos)
         ge.join()
         filtered_result = ge.get()
@@ -2864,7 +2865,7 @@ class PoolRecall(object):
                                     risk_filter_flag=self.risk_filter_flag,
                                     app_region_filtered=self.app_region_filtered,
                                     videos_with_risk=self.videos_with_risk,
-                                   force_truncation=20
+                                   force_truncation=20, env_dict=self.env_dict
                                    )
             ge = gevent.spawn(filter_.filter_videos, '', province_code, None)
             ge.join()
@@ -2955,7 +2956,7 @@ class PoolRecall(object):
                 video_score[video_id] = value[1]
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos, pool_type='normal',
                               region_code=province_code, shield_config=self.shield_config)
             ge.join()
@@ -3092,7 +3093,7 @@ class PoolRecall(object):
                 video_score[video_id] = value[1]
             # 过滤
             filter_ = FilterVideos(request_id=self.request_id,
-                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                                   app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
             ge = gevent.spawn(filter_.filter_videos)
             ge.join()
             filtered_result = ge.get()
@@ -3175,7 +3176,7 @@ class PoolRecall(object):
                                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
+                               videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                )
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
@@ -3347,11 +3348,6 @@ class PoolRecall(object):
                     video_mapping[video_id] = [flow_pool]
                 else:
                     video_mapping[video_id].append(flow_pool)
-            # 过滤
-            # filter_ = FilterVideos(request_id=self.request_id,
-            #                        app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
-            # filtered_result = filter_.filter_videos(pool_type='flow', region_code=region_code, shield_config=self.shield_config)
-            # print("flow filter time:", (time.time()-et_get)*1000)
             # 检查可分发数
             if video_ids and len(video_ids)>0:
                 check_result = self.check_video_counts(video_ids=video_ids, flow_pool_mapping=video_mapping)
@@ -3417,7 +3413,7 @@ class PoolRecall(object):
         video_ids = video_ids[:recall_num]
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
         if filtered_viewed_videos is None:
             return recall_result
@@ -3460,7 +3456,7 @@ class PoolRecall(object):
         video_ids = video_ids[:recall_num]
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos(pool_type='rov')
         if filtered_viewed_videos is None:
             return recall_result
@@ -3498,7 +3494,7 @@ class PoolRecall(object):
         video_ids = video_ids[:50]
         # print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos(pool_type='normal')
         if filtered_viewed_videos is None:
             return recall_result
@@ -3542,7 +3538,7 @@ class PoolRecall(object):
         video_ids = video_ids[:recall_num]
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
         if filtered_viewed_videos is None:
             return recall_result
@@ -3751,7 +3747,7 @@ class PoolRecall(object):
                                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
+                               videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                )
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
@@ -3799,7 +3795,7 @@ class PoolRecall(object):
         video_ids = video_ids[:recall_num]
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
         if filtered_viewed_videos is None:
             return recall_result
@@ -3859,7 +3855,7 @@ class PoolRecall(object):
                                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
+                               videos_with_risk=self.videos_with_risk, env_dict=self.env_dict
                                )
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal', region_code=self.get_region_code())
         if filtered_viewed_videos is None:
@@ -3906,7 +3902,7 @@ class PoolRecall(object):
         video_ids = video_ids[:recall_num]
         #print(video_ids)
         filter_ = FilterVideos(request_id=self.request_id,
-                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids)
+                               app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids, env_dict=self.env_dict)
         filtered_viewed_videos = filter_.filter_videos_status(pool_type='normal')
         if filtered_viewed_videos is None:
             return recall_result