Selaa lähdekoodia

add abtest: 112

liqian 2 vuotta sitten
vanhempi
commit
8528655e33
2 muutettua tiedostoa jossa 15 lisäystä ja 1 poistoa
  1. 5 0
      config.py
  2. 10 1
      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不同实验标识

+ 10 - 1
video_recall.py

@@ -1774,6 +1774,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
@@ -1789,6 +1790,7 @@ class PoolRecall(object):
                                                               with_scores=True)
             if not data:
                 break
+            recall_data.extend(data)
             # 获取视频id,并转换类型为int,并存储为key-value{videoId: score}
             video_ids = []
             video_score = {}
@@ -1811,7 +1813,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],
@@ -1820,6 +1822,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,