Ver Fonte

abtest130 code all

liqian há 2 anos atrás
pai
commit
821ded924b
3 ficheiros alterados com 83 adições e 80 exclusões
  1. 2 2
      config.py
  2. 60 59
      recommend.py
  3. 21 19
      video_recall.py

+ 2 - 2
config.py

@@ -547,7 +547,7 @@ class BaseConfig(object):
                 {"dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
                 # {"dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
                 # {"dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
-                {"dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
+                # {"dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
             ]
         },
         1: {"dataListDesc": "地域小时级", "dataListCode": 1, "keyPrefix": RECALL_KEY_NAME_PREFIX_REGION_BY_H},
@@ -556,7 +556,7 @@ class BaseConfig(object):
         4: {"dataListDesc": "非地域相对24小时级列表2", "dataListCode": 4, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_24H_H},
         # 5: {"dataListDesc": "非地域相对48小时级", "dataListCode": 5, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP2_REGION_48H_H},
         # 6: {"dataListDesc": "非地域相对48小时级列表2", "dataListCode": 6, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP3_REGION_48H_H},
-        7: {"dataListDesc": "大列表", "dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
+        # 7: {"dataListDesc": "大列表", "dataListCode": 7, "keyPrefix": RECALL_KEY_NAME_PREFIX_DUP_REGION_H},
     }
 
     # VIDEO_DATA_LIST_AB_EXP_CODE_MAPPING = {

+ 60 - 59
recommend.py

@@ -180,7 +180,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)
-    _, last_rov_recall_key, _ = pool_recall.get_video_last_idx()
+    # _, 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()]:
     #     t = [gevent.spawn(pool_recall.rule_recall_by_h, size, expire_time),
@@ -192,13 +192,15 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     #          gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
     #          gevent.spawn(pool_recall.flow_pool_recall, size)]
     # 地域分组实验
-    if ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
-        if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
-            t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time)]
-        else:
-            t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time),
-                 gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
-                 gevent.spawn(pool_recall.flow_pool_recall, size)]
+    # if ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
+
+    if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
+        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time)]
+    else:
+        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time),
+             gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
+             gevent.spawn(pool_recall.flow_pool_recall, size)]
+
     # 最惊奇相关推荐实验
     # elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
     #     t = [gevent.spawn(pool_recall.relevant_recall_19, video_id, size, expire_time),
@@ -220,13 +222,13 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     #     t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
     #          gevent.spawn(pool_recall.flow_pool_recall, size),
     #          gevent.spawn(pool_recall.old_videos_recall, size)]
-    else:
-        if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
-            t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time)]
-        else:
-            t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
-                 gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
-                 gevent.spawn(pool_recall.flow_pool_recall, size)]
+    # else:
+    #     if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
+    #         t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time)]
+    #     else:
+    #         t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
+    #              gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
+    #              gevent.spawn(pool_recall.flow_pool_recall, size)]
     gevent.joinall(t)
     recall_result_list = [i.get() for i in t]
 
@@ -302,14 +304,18 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
         # 兜底策略
         # log_.info('====== bottom strategy')
         start_bottom = time.time()
-        if ab_code == config_.AB_CODE['region_rank_by_h'].get('abtest_130'):
-            rank_result = bottom_strategy2(
-                size=size, app_type=app_type, mid=mid, uid=uid, ab_code=ab_code, client_info=client_info, params=params
-            )
-        else:
-            rank_result = bottom_strategy(
-                request_id=request_id, size=size, app_type=app_type, ab_code=ab_code, params=params
-            )
+        rank_result = bottom_strategy2(
+            size=size, app_type=app_type, mid=mid, uid=uid, ab_code=ab_code, client_info=client_info, params=params
+        )
+
+        # if ab_code == config_.AB_CODE['region_rank_by_h'].get('abtest_130'):
+        #     rank_result = bottom_strategy2(
+        #         size=size, app_type=app_type, mid=mid, uid=uid, ab_code=ab_code, client_info=client_info, params=params
+        #     )
+        # else:
+        #     rank_result = bottom_strategy(
+        #         request_id=request_id, size=size, app_type=app_type, ab_code=ab_code, params=params
+        #     )
 
         # log_.info({
         #     'logTimestamp': int(time.time() * 1000),
@@ -325,7 +331,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
 
     result['rankResult'] = rank_result
 
-    return result, last_rov_recall_key
+    return result
     # return rank_result, last_rov_recall_key
 
 
@@ -369,7 +375,7 @@ def ab_test_op(rank_result, ab_code_list, app_type, mid, uid, **kwargs):
     return rank_result
 
 
-def update_redis_data(result, app_type, mid, last_rov_recall_key, top_K, expire_time=24*3600):
+def update_redis_data(result, app_type, mid, top_K, expire_time=24*3600):
     """
     根据最终的排序结果更新相关redis数据
     :param result: 排序结果
@@ -394,17 +400,17 @@ def update_redis_data(result, app_type, mid, last_rov_recall_key, top_K, expire_
                 redis_helper.add_data_with_set(key_name=preview_key_name, values=tuple(preview_video_ids), expire_time=30 * 60)
                 # log_.info('preview redis update success!')
 
-            # 将此次获取的ROV召回池top_K末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
-            rov_recall_video = [item['videoId'] for item in result[:top_K]
-                                if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
-            if len(rov_recall_video) > 0:
-                if app_type == config_.APP_TYPE['APP']:
-                    key_name = config_.UPDATE_ROV_KEY_NAME_APP
-                else:
-                    key_name = config_.UPDATE_ROV_KEY_NAME
-                if not redis_helper.get_score_with_value(key_name=key_name, value=rov_recall_video[-1]):
-                    redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1],
-                                                   expire_time=expire_time)
+            # # 将此次获取的ROV召回池top_K末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
+            # rov_recall_video = [item['videoId'] for item in result[:top_K]
+            #                     if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
+            # if len(rov_recall_video) > 0:
+            #     if app_type == config_.APP_TYPE['APP']:
+            #         key_name = config_.UPDATE_ROV_KEY_NAME_APP
+            #     else:
+            #         key_name = config_.UPDATE_ROV_KEY_NAME
+            #     if not redis_helper.get_score_with_value(key_name=key_name, value=rov_recall_video[-1]):
+            #         redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1],
+            #                                        expire_time=expire_time)
                 # log_.info('last video redis update success!')
 
             # 将此次获取的 地域分组小时级数据列表 中的视频id同步刷新到redis中,方便下次快速定位到召回位置
@@ -932,15 +938,14 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
 
     # 简单召回 - 排序 - 兜底
     get_result_st = time.time()
-    result, last_rov_recall_key = video_recommend(request_id=request_id,
-    # rank_result, last_rov_recall_key = video_recommend(request_id=request_id,
-                                                       mid=mid, uid=uid, app_type=app_type,
-                                                       size=size, top_K=top_K, flow_pool_P=flow_pool_P,
-                                                       algo_type=algo_type, client_info=client_info,
-                                                       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)
+    result = video_recommend(request_id=request_id,
+                             mid=mid, uid=uid, app_type=app_type,
+                             size=size, top_K=top_K, flow_pool_P=flow_pool_P,
+                             algo_type=algo_type, client_info=client_info,
+                             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)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,
@@ -961,8 +966,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
     #                     app_type=app_type, mid=mid, uid=uid)
     # redis数据刷新
     update_redis_st = time.time()
-    update_redis_data(result=rank_result, app_type=app_type, mid=mid, last_rov_recall_key=last_rov_recall_key,
-                      top_K=top_K)
+    update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,
@@ -1019,18 +1023,16 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
     # })
     recommend_result['getRecommendParamsTime'] = (time.time() - param_st) * 1000
 
-
     # 简单召回 - 排序 - 兜底
     get_result_st = time.time()
-    result, last_rov_recall_key = video_recommend(request_id=request_id,
-    # rank_result, last_rov_recall_key = video_recommend(request_id=request_id,
-                                                       mid=mid, uid=uid, app_type=app_type,
-                                                       size=size, top_K=top_K, flow_pool_P=flow_pool_P,
-                                                       algo_type='', client_info=client_info,
-                                                       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, video_id=video_id,
-                                                       params=params)
+    result = video_recommend(request_id=request_id,
+                             mid=mid, uid=uid, app_type=app_type,
+                             size=size, top_K=top_K, flow_pool_P=flow_pool_P,
+                             algo_type='', client_info=client_info,
+                             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, video_id=video_id,
+                             params=params)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,
@@ -1052,8 +1054,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
 
     # redis数据刷新
     update_redis_st = time.time()
-    update_redis_data(result=rank_result, app_type=app_type, mid=mid, last_rov_recall_key=last_rov_recall_key,
-                      top_K=top_K)
+    update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # log_.info({
     #     'logTimestamp': int(time.time() * 1000),
     #     'request_id': request_id,

+ 21 - 19
video_recall.py

@@ -1229,8 +1229,9 @@ class PoolRecall(object):
         if region_code == '-1':
             t = [
                 # gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size, 'day_24h'),
-                 gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup2', expire_time),
-                 gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup3', expire_time)]
+                gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup2', expire_time),
+                gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup3', expire_time)
+            ]
         else:
             t = [
                 # gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size),
@@ -1239,7 +1240,8 @@ class PoolRecall(object):
                  gevent.spawn(self.recall_region_dup_24h, region_code, size, 'region_h', expire_time),
                  gevent.spawn(self.recall_region_dup_24h, region_code, size, 'region_24h', expire_time),
                  gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup2', expire_time),
-                 gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup3', expire_time)]
+                 gevent.spawn(self.recall_region_dup_24h, region_code, size, '24h_dup3', expire_time)
+            ]
         # else:
         #     if province_code == '-1':
         #         # t = [gevent.spawn(self.rov_pool_recall_with_region_by_h, province_code, size, 'day_24h')]
@@ -1273,22 +1275,22 @@ class PoolRecall(object):
                     else:
                         continue
 
-        # 130实验组不获取大列表的数据
-        if self.ab_code != config_.AB_CODE['region_rank_by_h'].get('abtest_130'):
-            # 判断获取到的小时级数据数量
-            if len(recall_result) < size:
-                # 补充数据
-                rov_recall_result = self.rov_pool_recall(size=size, expire_time=expire_time)
-                # 去重合并
-                for video in rov_recall_result:
-                    vid = video.get('videoId')
-                    if vid not in now_video_ids:
-                        recall_result.append(video)
-                        now_video_ids.append(vid)
-                        if len(recall_result) >= size:
-                            break
-                        else:
-                            continue
+        # # 130实验组不获取大列表的数据
+        # if self.ab_code != config_.AB_CODE['region_rank_by_h'].get('abtest_130'):
+        #     # 判断获取到的小时级数据数量
+        #     if len(recall_result) < size:
+        #         # 补充数据
+        #         rov_recall_result = self.rov_pool_recall(size=size, expire_time=expire_time)
+        #         # 去重合并
+        #         for video in rov_recall_result:
+        #             vid = video.get('videoId')
+        #             if vid not in now_video_ids:
+        #                 recall_result.append(video)
+        #                 now_video_ids.append(vid)
+        #                 if len(recall_result) >= size:
+        #                     break
+        #                 else:
+        #                     continue
 
         # log_.info({
         #     'logTimestamp': int(time.time() * 1000),