Browse Source

add region_rule_rank2 ab test

liqian 2 years ago
parent
commit
15ea51b591
3 changed files with 35 additions and 4 deletions
  1. 12 0
      config.py
  2. 6 0
      recommend.py
  3. 17 4
      video_recall.py

+ 12 - 0
config.py

@@ -34,6 +34,7 @@ class BaseConfig(object):
         'region_rule_rank1': '037',
         'rule_rank6': '040',
         '24h_rule_rank1': '052',
+        'region_rule_rank2': '054',
     }
 
     # abTest
@@ -70,6 +71,7 @@ class BaseConfig(object):
 
         'region_rank_by_h': {
             'region_rule_rank1': 60001,
+            'region_rule_rank2': 60002,
         },  # 地域分组小时级规则实验
 
         'rank_by_24h': {
@@ -99,6 +101,7 @@ class BaseConfig(object):
     RULE_KEY_REGION = {
         'initial': '',
         'region_rule_rank1': 'rule1',
+        'region_rule_rank2': 'rule1',
     }
 
     # 小时级规则更新过去24h数据列表key不同实验标识
@@ -191,6 +194,15 @@ class BaseConfig(object):
     RECALL_KEY_NAME_PREFIX_DUP_REGION_H = 'com.weiqu.video.recall.hot.item.score.dup.region.h.'
     # 地域分组小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.region.h.item.{region}.{rule_key}
     REGION_H_VIDEO_FILER = 'com.weiqu.video.filter.region.h.item.'
+
+    # 小程序地域分组小时级更新24h结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.region.24h.{region}.{rule_key}.{date}.{h}
+    RECALL_KEY_NAME_PREFIX_REGION_BY_24H = 'com.weiqu.video.recall.item.score.region.24h.'
+    # 小程序天级更新结果与 小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
+    # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.day.24h.{region}.{rule_key}.{date}.{h}
+    RECALL_KEY_NAME_PREFIX_DUP_REGION_DAY_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.day.24h.'
+    # 小程序离线ROV模型结果与 小程序天级更新结果/小程序地域分组小时级更新24h结果 去重后 存放 redis key前缀,
+    # 完整格式:com.weiqu.video.recall.hot.item.score.dup.region.24h.{region}.{rule_key}.{date}.{h}
+    RECALL_KEY_NAME_PREFIX_DUP_REGION_24H = 'com.weiqu.video.recall.hot.item.score.dup.region.24h.'
     # 地域分组小时级更新24h视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.region.h.item.24h.{region}.{rule_key}
     REGION_H_VIDEO_FILER_24H = 'com.weiqu.video.filter.region.h.item.24h.'
 

+ 6 - 0
recommend.py

@@ -467,6 +467,12 @@ def get_recommend_params(ab_exp_info):
             rule_key = config_.RULE_KEY_24H['24h_rule_rank1']
             no_op_flag = True
 
+        elif config_.AB_EXP_CODE['region_rule_rank2'] in ab_exp_code_list:
+            ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank2')
+            expire_time = 3600
+            rule_key = config_.RULE_KEY_REGION['region_rule_rank2']
+            no_op_flag = True
+
         else:
             ab_code = config_.AB_CODE['initial']
             expire_time = 24 * 3600

+ 17 - 4
video_recall.py

@@ -88,7 +88,10 @@ class PoolRecall(object):
         # 列表存储 redis-key prefix
         if self.ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
             if key_flag == 'region_24h':
-                key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H}{province_code}."
+                if self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank2'):
+                    key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_REGION_BY_24H}{province_code}."
+                else:
+                    key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H}{province_code}."
             else:
                 key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H}{province_code}."
         elif self.ab_code in [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
@@ -805,7 +808,10 @@ class PoolRecall(object):
                     province_code = self.client_info.get('provinceCode', '-1')
                     if province_code == '':
                         province_code = '-1'
-                    key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_H}{province_code}."
+                    if self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank2'):
+                        key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_24H}{province_code}."
+                    else:
+                        key_prefix = f"{config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_H}{province_code}."
                 elif self.ab_code in [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
                     key_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP_24H
                 else:
@@ -980,8 +986,12 @@ class PoolRecall(object):
             # 小程序地域分组天级更新结果与小程序地域分组小时级更新结果去重
             key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_DAY_H
         elif region_dup == 2:
-            # 小程序天级更新结果与 小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重
-            key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_DAY_H
+            if self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank2'):
+                # 小程序天级更新结果与 小程序地域分组小时级更新24h结果 去重
+                key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_DAY_24H
+            else:
+                # 小程序天级更新结果与 小程序地域分组天级更新结果/小程序地域分组小时级更新结果 去重
+                key_name_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_DAY_H
         else:
             key_name_prefix = ''
         key_name = f"{key_name_prefix}{province_code}.{self.rule_key}.{now_date}.{h}"
@@ -1031,6 +1041,9 @@ class PoolRecall(object):
         if province_code == '-1':
             t = [gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size),
                  gevent.spawn(self.region_dup_recall, province_code, 2, size, expire_time)]
+        elif self.ab_code == config_.AB_CODE['region_rank_by_h'].get('region_rule_rank2'):
+            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)]
         else:
             t = [gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size),
                  gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size, 'region_24h'),