Browse Source

Merge branch 'abtest-112-20220816' into pre-master

liqian 2 years ago
parent
commit
2b0158ee3c
2 changed files with 27 additions and 2 deletions
  1. 5 0
      config.py
  2. 22 2
      video_recall.py

+ 5 - 0
config.py

@@ -120,6 +120,7 @@ class BaseConfig(object):
             'region_rule_rank4_appType_18_data2': 60015,
             'region_rule_rank6_appType_0_data1': 60016,
             'region_rule_rank6_appType_13_data2': 60017,
+            'abtest_112': 60018,
         },  # 地域分组小时级规则实验
 
         'rank_by_24h': {
@@ -173,6 +174,10 @@ class BaseConfig(object):
             'data_key': 'data6', 'rule_key': 'rule3',
             'ab_code': AB_CODE['region_rank_by_h'].get('region_rule_rank4_appType_6_data3')
         },  # 票圈短视频:data-[内容精选,vlog, 票圈视频,票圈短视频], rule-rule3
+        '112': {
+            'data_key': 'data1', 'rule_key': 'rule4',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_112')
+        }  # 召回定位优化实验
     }
 
     # 小程序小时级列表key不同实验标识

+ 22 - 2
video_recall.py

@@ -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,