Browse Source

add 24h_rule_rank1 ab test-052

liqian 2 years ago
parent
commit
46f63040a9
4 changed files with 37 additions and 2 deletions
  1. 19 0
      config.py
  2. 8 1
      recommend.py
  3. 2 0
      utils.py
  4. 8 1
      video_recall.py

+ 19 - 0
config.py

@@ -33,6 +33,7 @@ class BaseConfig(object):
         'old_video': '034',
         'region_rule_rank1': '037',
         'rule_rank6': '040',
+        '24h_rule_rank1': '052',
     }
 
     # abTest
@@ -70,6 +71,10 @@ class BaseConfig(object):
         'region_rank_by_h': {
             'region_rule_rank1': 60001,
         },  # 地域分组小时级规则实验
+
+        'rank_by_24h': {
+            '24h_rule_rank1': 70001,
+        },  # 小时级规则更新过去24h数据实验
     }
 
     # 小程序小时级列表key不同实验标识
@@ -96,6 +101,12 @@ class BaseConfig(object):
         'region_rule_rank1': 'rule1',
     }
 
+    # 小时级规则更新过去24h数据列表key不同实验标识
+    RULE_KEY_24H = {
+        'initial': '',
+        '24h_rule_rank1': 'rule1',
+    }
+
     # pushFrom
     PUSH_FROM = {
         'rov_recall': 'recall_pool',  # rov召回池
@@ -150,6 +161,14 @@ class BaseConfig(object):
     # 完整格式:com.weiqu.video.recall.hot.item.score.dup.day.pre.{rule_key}.{date}
     RECALL_KEY_NAME_PREFIX_DUP_DAY_PRE = 'com.weiqu.video.recall.hot.item.score.dup.day.pre.'
 
+    # 小程序小时级24h数据更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.day.{rule_key}.{date}.{h}
+    RECALL_KEY_NAME_PREFIX_BY_24H = 'com.weiqu.video.recall.item.score.24h.'
+    # 小程序离线ROV模型结果与小程序小时级24h更新结果去重后 存放 redis key前缀,
+    # 完整格式:com.weiqu.video.recall.hot.item.score.dup.24h.{rule_key}.{date}.{h}
+    RECALL_KEY_NAME_PREFIX_DUP_24H = 'com.weiqu.video.recall.hot.item.score.dup.24h.'
+    # 小时级视频状态不符合推荐要求的列表 redis key,完整格式:com.weiqu.video.filter.h.item.24h.{rule_key}
+    H_VIDEO_FILER_24H = 'com.weiqu.video.filter.h.item.24h.'
+
     # 小程序地域分组小时级更新结果存放 redis key前缀,完整格式:com.weiqu.video.recall.item.score.region.h.{region}.{rule_key}.{date}.{h}
     RECALL_KEY_NAME_PREFIX_REGION_BY_H = 'com.weiqu.video.recall.item.score.region.h.'
     # 小程序地域分组天级更新结果与小程序地域分组小时级更新结果去重后 存放 redis key前缀,

+ 8 - 1
recommend.py

@@ -174,7 +174,8 @@ def video_recommend(mid, uid, size, top_K, flow_pool_P, app_type, algo_type, cli
                              client_info=client_info, rule_key=rule_key, no_op_flag=no_op_flag)
     _, 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()]:
+    if ab_code in [code for _, code in config_.AB_CODE['rank_by_h'].items()] + \
+            [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
         t = [gevent.spawn(pool_recall.rov_pool_recall_by_h, size, expire_time),
              gevent.spawn(pool_recall.flow_pool_recall, size)]
     # 地域分组实验
@@ -460,6 +461,12 @@ def get_recommend_params(ab_exp_info):
             rule_key = config_.RULE_KEY_REGION['region_rule_rank1']
             no_op_flag = True
 
+        elif config_.AB_EXP_CODE['24h_rule_rank1'] in ab_exp_code_list:
+            ab_code = config_.AB_CODE['rank_by_24h'].get('24h_rule_rank1')
+            expire_time = 3600
+            rule_key = config_.RULE_KEY_24H['24h_rule_rank1']
+            no_op_flag = True
+
         else:
             ab_code = config_.AB_CODE['initial']
             expire_time = 24 * 3600

+ 2 - 0
utils.py

@@ -155,6 +155,8 @@ class FilterVideos(object):
         # 获取不符合推荐状态的视频
         if ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
             key_prefix = f"{config_.REGION_H_VIDEO_FILER}{province_code}."
+        elif ab_code in [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
+            key_prefix = config_.H_VIDEO_FILER_24H
         else:
             key_prefix = config_.H_VIDEO_FILER
         filter_videos_list = redis_helper.get_data_from_set(key_name=f"{key_prefix}{rule_key}")

+ 8 - 1
video_recall.py

@@ -60,6 +60,8 @@ class PoolRecall(object):
         now_dt = datetime.strftime(now_date, '%Y%m%d')
         if self.ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
             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()]:
+            key_prefix = config_.RECALL_KEY_NAME_PREFIX_BY_24H
         else:
             key_prefix = config_.RECALL_KEY_NAME_PREFIX_BY_H
         now_h_recall_key = f"{key_prefix}{self.rule_key}.{now_dt}.{h}"
@@ -107,6 +109,8 @@ class PoolRecall(object):
                 # 记录的h - 当前h = 1,判断当前h数据是否已更新
                 if self.ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
                     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()]:
+                    key_prefix = config_.RECALL_KEY_NAME_PREFIX_BY_24H
                 else:
                     key_prefix = config_.RECALL_KEY_NAME_PREFIX_BY_H
                 now_h_recall_key = f"{key_prefix}{self.rule_key}.{now_dt}.{h}"
@@ -579,7 +583,8 @@ class PoolRecall(object):
         # abCode = 30001   # 老好看视频 / 票圈最惊奇 首页/相关推荐逻辑更新实验
         if self.ab_code in [code for _, code in config_.AB_CODE['rank_by_h'].items()] + \
                 [code for _, code in config_.AB_CODE['region_rank_by_h'].items()] + \
-                [config_.AB_CODE['rov_rank_appType_18_19'], config_.AB_CODE['rov_rank_appType_19']] or \
+                [config_.AB_CODE['rov_rank_appType_18_19'], config_.AB_CODE['rov_rank_appType_19']] + \
+                [code for _, code in config_.AB_CODE['rank_by_24h'].items()] or \
                 self.app_type == config_.APP_TYPE['APP']:
             rov_pool_key, redis_date = self.get_pool_redis_key_with_h('rov')
 
@@ -798,6 +803,8 @@ class PoolRecall(object):
                     if province_code == '':
                         province_code = '-1'
                     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:
                     key_prefix = config_.RECALL_KEY_NAME_PREFIX_DUP_H
                 key_name = f"{key_prefix}{self.rule_key}.{now_date}.{h}"