Pārlūkot izejas kodu

Merge branch 'feature_2023071415_liqian_add_ad_abtest' into dev

liqian 1 gadu atpakaļ
vecāks
revīzija
eb8c4331c3
5 mainītis faili ar 303 papildinājumiem un 48 dzēšanām
  1. 40 0
      config.py
  2. 171 0
      rank_service.py
  3. 68 33
      recommend.py
  4. 21 14
      video_rank.py
  5. 3 1
      video_recall.py

+ 40 - 0
config.py

@@ -161,6 +161,10 @@ class BaseConfig(object):
             'abtest_367': 60062,
             'abtest_368': 60063,
             'abtest_373': 60064,
+            'abtest_393': 60065,
+            'abtest_394': 60066,
+            'abtest_395': 60067,
+            'abtest_396': 60068,
         },  # 地域分组小时级规则实验
 
         'rank_by_24h': {
@@ -404,6 +408,22 @@ class BaseConfig(object):
         '373': {
             'data_key': 'data10', 'rule_key': 'rule7',
             'ab_code': AB_CODE['region_rank_by_h'].get('abtest_373')
+        },
+        '393': {
+            'data_key': 'data10', 'rule_key': 'rule7',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_393')
+        },
+        '394': {
+            'data_key': 'data10', 'rule_key': 'rule7',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_394')
+        },
+        '395': {
+            'data_key': 'data10', 'rule_key': 'rule7',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_395')
+        },
+        '396': {
+            'data_key': 'data10', 'rule_key': 'rule7',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_396')
         }
     }
 
@@ -904,6 +924,14 @@ class BaseConfig(object):
             'care_model_status_param': 1,
             'care_model_ab_mid_group': ['mean_group'],
         },  # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告 + 调整计算公式(标准贝叶斯公式)
+        '173-n': {
+            'video': {'data': 'videos0out'},
+            'user': {'data': 'user0out', 'rule': 'rule2'},
+            'group_class_key': 'class1',
+            'no_ad_mid_group_list': NO_AD_MID_GROUP_LIST['class1'],
+            'care_model_status_param': 1,
+            'care_model_ab_mid_group': ['mean_group'],
+        },  # 所有广告类型数据 + 优化阈值计算方式 + else未开启关怀模式人群多出广告
 
         # 票圈视频+
         '190-a': {
@@ -1297,6 +1325,9 @@ class DevelopmentConfig(BaseConfig):
     # 获取用户近30天是否有回流接口地址
     GET_USER_30DayReturnCnt_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
 
+    #tf serving url
+    TF_SERVING_URL = 'http://localhost:8501/v1/models/deepfm:predict'
+
     # 日志服务配置
     ALIYUN_LOG = {
         'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
@@ -1352,6 +1383,9 @@ class TestConfig(BaseConfig):
     # 获取用户近30天是否有回流接口地址
     GET_USER_30DayReturnCnt_URL = 'http://videotest-internal.yishihui.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
 
+    # tf serving url
+    TF_SERVING_URL = 'http://localhost:8501/v1/models/deepfm:predict'
+
     # 日志服务配置
     ALIYUN_LOG = {
         'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
@@ -1407,6 +1441,9 @@ class PreProductionConfig(BaseConfig):
     # 获取用户近30天是否有回流接口地址
     GET_USER_30DayReturnCnt_URL = 'http://videopre-internal.piaoquantv.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
 
+    # tf serving url
+    TF_SERVING_URL = 'http://localhost:8501/v1/models/deepfm:predict'
+
     # 日志服务配置
     ALIYUN_LOG = {
         'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',
@@ -1462,6 +1499,9 @@ class ProductionConfig(BaseConfig):
     # 获取用户近30天是否有回流接口地址
     GET_USER_30DayReturnCnt_URL = 'http://longvideoapi-internal.piaoquantv.com/longvideoapi/openapi/user/has30DayReturnCnt?mid='
 
+    # tf serving url
+    TF_SERVING_URL = 'http://localhost:8501/v1/models/deepfm:predict'
+
     # 日志服务配置
     ALIYUN_LOG = {
         'ENDPOINT': 'cn-hangzhou-intranet.log.aliyuncs.com',

+ 171 - 0
rank_service.py

@@ -0,0 +1,171 @@
+#coding utf-8
+from db_helper import RedisHelper
+from config import set_config
+from  utils import request_post
+import json
+
+config_ = set_config()
+def get_featurs(data, size, top_K, flow_pool_P, env_dict):
+    recall_list = []
+    vidKeys = []
+    feature_dict = {}
+    # defult value
+    apptype = 0
+    pagesource = ""
+    versioncode = ""
+    machineinfo_brand=""
+    recommendsource = ""
+    machineinfo_platform = ''
+    sencetype = ''
+    mid = ''
+    if env_dict:
+        apptype = env_dict.get('app_type','')
+        pagesource = env_dict.get('versioncode', '')
+        versioncode = env_dict.get('versioncode', '')
+        machineinfo_brand = env_dict.get('machineinfo_brand', '')
+        machineinfo_model = env_dict.get('machineinfo_model', '')
+        recommendsource = env_dict.get('recommendsource', '')
+        machineinfo_platform = env_dict.get('machineinfo_platform', '')
+        sencetype = env_dict.get('sencetype', '')
+    redisObj = RedisHelper()
+    pre_str = "v_ctr:"
+    mid_list = []
+    videoid_list = []
+    apptype_list = []
+    pagesource_list = []
+    versioncode_list = []
+    machineinfo_brand_list = []
+    machineinfo_model_list = []
+    recommendsource_list = []
+    machineinfo_platform_list = []
+    sencetype_list = []
+    day_rov_list = []
+    day_share_return_score_list = []
+    day_share_score_list = []
+    day_return_rate_list = []
+    day_ctr_score_list = []
+    day_play_pv_list = []
+    day_play_users_list = []
+    day_return_users_list = []
+    day_share_pv_list = []
+    day_view_pv_list = []
+    day_view_users_list = []
+    day_share_users = []
+    for recall_item in data['rov_pool_recall']:
+        if len(recall_item)<=0:
+            continue
+        vid = recall_item.get("videoId",0)
+        mid_list.append(mid)
+        videoid_list.append(vid)
+        apptype_list.append(apptype)
+        pagesource_list.append(pagesource)
+        versioncode_list.append(versioncode)
+        machineinfo_brand_list.append(machineinfo_brand)
+        machineinfo_model_list.append(machineinfo_model)
+        recommendsource_list.append(recommendsource)
+        machineinfo_platform_list.append(machineinfo_platform)
+        sencetype_list.append(sencetype)
+        vidKeys.append(pre_str + str(vid))
+        recall_list.append(recall_item)
+    video_static_info = redisObj.get_batch_key(vidKeys)
+    if video_static_info:
+        for i in range(len(video_static_info)):
+            try:
+                # print(video_scores[i])
+                vid = vidKeys[i].replace(pre_str,"")
+                if video_static_info[i] :
+                    per_video_staic = json.loads(video_static_info[i])
+                    if vid in feature_dict:
+                        vid_fea_info = feature_dict[vid]
+                        day_rov_list.append(per_video_staic[0])
+                        day_share_return_score_list.append(per_video_staic[1])
+                        day_share_score_list.append(per_video_staic[2])
+                        day_return_rate_list.append(per_video_staic[3])
+                        day_ctr_score_list.append(per_video_staic[4])
+                        day_view_users_list.append(per_video_staic[5])
+                        day_view_pv_list.append(per_video_staic[6])
+                        day_play_users_list.append(per_video_staic[7])
+                        day_play_pv_list.append(per_video_staic[8])
+                        day_share_users.append(per_video_staic[9])
+                        day_share_pv_list.append(per_video_staic[10])
+                        day_return_users_list.append(per_video_staic[11])
+            except Exception:
+                day_rov_list.append(0.0)
+                day_share_return_score_list.append(0.0)
+                day_share_score_list.append(0.0)
+                day_return_rate_list.append(0.0)
+                day_ctr_score_list.append(0.0)
+                day_view_users_list.append(0)
+                day_view_pv_list.append(0)
+                day_play_users_list.append(0)
+                day_play_pv_list.append(0)
+                day_share_users.append(0)
+                day_share_pv_list.append(0)
+                day_return_users_list.append(0)
+    feature_dict["mid_list"] = mid_list
+    feature_dict["videoid_list"] = videoid_list
+    feature_dict["apptype_list"]  = apptype_list
+    feature_dict["pagesource_list"] = pagesource_list
+    feature_dict["versioncode_list"] = versioncode_list
+    feature_dict["machineinfo_brand_list"] = machineinfo_brand_list
+    feature_dict["machineinfo_model_list"] = machineinfo_model_list
+    feature_dict["recommendsource_list"] = recommendsource_list
+    feature_dict["machineinfo_model_list"] = machineinfo_model_list
+    feature_dict["machineinfo_platform_list"] = machineinfo_platform_list
+    feature_dict["sencetype_lis"] = sencetype_list
+    feature_dict["day_rov_list"] = day_rov_list
+    feature_dict["day_share_return_score_list"] = day_share_return_score_list
+    feature_dict["day_share_score_list"] = day_share_score_list
+    feature_dict["day_return_rate_list"] = day_return_rate_list
+    feature_dict["day_ctr_score_list"] = day_ctr_score_list
+    feature_dict["day_ctr_score_list"] = day_ctr_score_list
+    feature_dict["day_play_pv_list"] = day_play_pv_list
+    feature_dict["day_play_users_list"] = day_play_users_list
+    feature_dict["day_return_users_list"] = day_return_users_list
+    feature_dict["day_share_pv_list"] = day_share_pv_list
+    feature_dict["day_view_pv_list"] = day_view_pv_list
+    feature_dict["day_view_users_list"] = day_view_users_list
+    feature_dict["day_share_users_list"] = day_share_users
+    return feature_dict
+
+def get_tf_serving_sores(feature_dict):
+    #for k, v in feature_dict:
+    inputs_data = {
+                    "mid": feature_dict["mid_list"],
+                    "videoid": feature_dict["videoid_list"],
+                    "apptype": feature_dict["apptype_list"],
+                    "pagesource": feature_dict["pagesource_list"],
+                    "versioncode": feature_dict["versioncode_list"],
+                    "machineinfo_brand": feature_dict["machineinfo_brand_list"],
+                    "machineinfo_model": feature_dict["machineinfo_model_list"],
+                    "recommendsource": feature_dict["recommendsource_list"],
+                    "machineinfo_platform": feature_dict["machineinfo_platform_list"],
+                    "sencetype": feature_dict["sencetype_list"],
+                    "day_rov": feature_dict["day_rov_list"],
+                    "day_share_return_score": feature_dict["day_share_return_score_list"],
+                    "day_share_score": feature_dict["day_share_score_list"],
+                    "day_return_rate": feature_dict["day_return_rate_list"],
+                    "day_ctr_score": feature_dict["day_ctr_score_list"],
+                    "day_play_pv": feature_dict["day_play_pv_list"],
+                    "day_play_users": feature_dict["day_play_users_list"],
+                    "day_share_pv": feature_dict["day_share_pv_list"],
+                    "day_return_users": feature_dict["day_return_users_list"],
+                    "day_share_users": feature_dict["day_share_users_list"],
+                    "day_view_pv": feature_dict["day_view_pv_list"],
+                    "day_view_users":feature_dict["day_view_users_list"]
+    }
+    request_data= {}
+    request_data["inputs"] = inputs_data
+    print(request_data)
+    # 调用http接口
+    result = request_post(request_url=config_.TF_SERVING_URL, request_data=request_data, timeout=(0.1, 1))
+
+    # print("result:", result)
+    if result is None:
+        # print("result is None")
+        # log_.info('过滤失败,types: {}'.format(types))
+        return []
+
+    print(result)
+
+    filtered_videos = result['data']

+ 68 - 33
recommend.py

@@ -458,6 +458,14 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
             t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
         if ab_code == 60056:
             t.append(gevent.spawn(pool_recall.get_U2I_reall, mid , exp_config))
+        if ab_code == 60065 :
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
+        if ab_code ==60067 :
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
+        if ab_code == 60068:
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
     else:
         t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config),
              gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
@@ -468,6 +476,14 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
             t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
         if ab_code == 60056:
             t.append(gevent.spawn(pool_recall.get_U2I_reall, mid , exp_config))
+        if ab_code == 60065:
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
+        if ab_code == 60067:
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
+        if ab_code == 60068:
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
 
     gevent.joinall(t)
     recall_result_list = [i.get() for i in t]
@@ -505,7 +521,7 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
             if len(rov_pool_recall) > 0:
                 recall_result_list[0] = rov_pool_recall
     # merge return video
-    if ab_code == 60055:
+    if ab_code == 60055 or ab_code==60065:
         rov_pool_recall = []
         if len(recall_result_list)>=2:
             region_recall = recall_result_list[0]
@@ -559,6 +575,44 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
             if len(rov_pool_recall)>0:
                 recall_result_list[0] = rov_pool_recall
 
+    #2. merge simrecall, return video
+    if ab_code == 60067 or ab_code==60068:
+        rov_pool_recall = []
+        if len(recall_result_list)>=2:
+            region_recall = recall_result_list[0]
+            return_video_reall = []
+            sim_recall = []
+            if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
+                sim_recall = recall_result_list[1]
+                if len(recall_result_list) >= 3:
+                    return_video_reall = recall_result_list[2]
+            else:
+                if len(recall_result_list)>=4:
+                    sim_recall = recall_result_list[3]
+                if len(recall_result_list)>=5:
+                    return_video_reall = recall_result_list[4]
+            #print("sim:",sim_recall)
+            now_video_ids = set('')
+            if len(region_recall)>0:
+                for video in region_recall:
+                    video_id = video.get('videoId')
+                    if video_id not in now_video_ids:
+                        rov_pool_recall.append(video)
+                        now_video_ids.add(video_id)
+            if len(sim_recall) > 0:
+                for video in sim_recall:
+                    video_id = video.get('videoId')
+                    if video_id not in now_video_ids:
+                        rov_pool_recall.append(video)
+                        now_video_ids.add(video_id)
+            if len(return_video_reall)>0:
+                for video in return_video_reall:
+                    video_id = video.get('videoId')
+                    if video_id not in now_video_ids:
+                        rov_pool_recall.append(video)
+                        now_video_ids.add(video_id)
+            if len(rov_pool_recall)>0:
+                recall_result_list[0] = rov_pool_recall
     result['recallResult'] = recall_result_list
     result['recallTime'] = (time.time() - start_recall) * 1000
     #print("recall:", recall_result_list)
@@ -1619,21 +1673,13 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
                              rule_key=rule_key, data_key=data_key,
                              no_op_flag=no_op_flag, old_video_index=old_video_index,
                              params=params, rule_key_30day=rule_key_30day, shield_config=shield_config)
-    # old base (test4, test5)
-    # elif ab_code == 60050 or ab_code == 60051:
-    #     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, rule_key_30day=rule_key_30day, shield_config=shield_config)
-    # 60052,60053,60057(test7, test8, test6)
-    # simrecal: 60054
-    # 3 days , 7days recall: 60005, test1
+    # 60052,60053,60057(test7, test8, test6) 融合排序
+    # simrecal: 60054 +融合
+    # return video, return video2
     # old video: 60056, test2
-    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 or ab_code == 60056 or ab_code==60057:
+    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 \
+            or ab_code == 60055 or ab_code == 60056 or ab_code==60057  \
+            or ab_code==60065 or ab_code == 60067 or ab_code==60068 :
         result = video_old_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,
@@ -1675,11 +1721,9 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
     update_redis_st = time.time()
     if ab_code == 60047 or  ab_code == 60048 or  ab_code == 60049:
         update_flow_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
-    # elif ab_code == 60050 or  ab_code == 60051:
+    # elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 \
+    #         or ab_code == 60056 or ab_code==60057:
     #     update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
-    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 \
-            or ab_code == 60056 or ab_code==60057:
-        update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     else:
         update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # log_.info({
@@ -1752,18 +1796,9 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
                                  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, rule_key_30day=rule_key_30day, shield_config=shield_config)
-        # log_.info({
-    # elif ab_code == 60050 or ab_code == 60051:
-    #     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, rule_key_30day=rule_key_30day, shield_config=shield_config)
     elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 or \
-            ab_code == 60056 or ab_code==60057:
+            ab_code == 60056 or ab_code==60057 or ab_code ==60065 or ab_code ==60067 \
+            or ab_code ==60068:
         result = video_old_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,
@@ -1808,9 +1843,9 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
          update_flow_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # elif ab_code == 60050 or ab_code == 60051:
     #      update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
-    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 or \
-            ab_code == 60056 or ab_code==60057:
-         update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
+    # elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 or \
+    #         ab_code == 60056 or ab_code==60057 or ab_code ==60065:
+    #      update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     else:
          update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # log_.info({

+ 21 - 14
video_rank.py

@@ -7,6 +7,7 @@ from config import set_config
 from video_recall import PoolRecall
 from db_helper import RedisHelper
 from utils import FilterVideos, send_msg_to_feishu
+from  rank_service import get_featurs, get_tf_serving_sores
 
 log_ = Log()
 config_ = set_config()
@@ -604,13 +605,11 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, exp_config=None):
     if not data['rov_pool_recall'] and not data['flow_pool_recall']:
         return [], 0
 
-    redisObj = RedisHelper()
-    vidKeys = []
-    recall_list = []
+
     #全量的是vlog,票圈精选, 334,60057,
     # 60054: simrecall,
     # 60052: 票圈精选,融合排序,60053:空置
-    # 60055: video_reall
+    # 60055: video_reall, 60065: video_recall2
     # 60056: get_U2I_reall
     pre_str = "k_p2:"
     if ab_code==60057:
@@ -626,26 +625,34 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, exp_config=None):
     elif ab_code == 60056:
         pre_str = "k_p7:"
     #print("pre_str:", pre_str)
+    recall_list = []
+    #call rank service
+    # if ab_code == 60066:
+    #     get_featurs()
+    #
+    # else:
+    redisObj = RedisHelper()
+    vidKeys = []
     for recall_item in data['rov_pool_recall']:
-        if len(recall_item)<=0:
+        if len(recall_item) <= 0:
             continue
-        vid = recall_item.get("videoId",0)
-        vidKeys.append(pre_str+ str(vid))
+        vid = recall_item.get("videoId", 0)
+        vidKeys.append(pre_str + str(vid))
         recall_list.append(recall_item)
-    #print("vidKeys:", vidKeys)
+    # print("vidKeys:", vidKeys)
     video_scores = redisObj.get_batch_key(vidKeys)
-    #print("video_score:",video_scores)
+    # print("video_score:",video_scores)
     for i in range(len(video_scores)):
-         try:
+        try:
             # print(video_scores[i])
             if video_scores[i] is None:
-                recall_list[i]['sort_score']= 0.0
+                recall_list[i]['sort_score'] = 0.0
             else:
                 video_score_str = json.loads(video_scores[i])
-                #print("video_score_str:", video_score_str)
+                # print("video_score_str:", video_score_str)
                 recall_list[i]['sort_score'] = video_score_str[0]
-         except Exception :
-                recall_list[i]['sort_score'] = 0.0
+        except Exception:
+            recall_list[i]['sort_score'] = 0.0
     #sort_items = sorted(video_items, key=lambda k: k[1], reverse=True)
     rov_recall_rank =sorted(recall_list, key=lambda k: k.get('sort_score', 0), reverse=True)
     #print(rov_recall_rank)

+ 3 - 1
video_recall.py

@@ -2820,10 +2820,12 @@ class PoolRecall(object):
         else:
             return None
 
-    def get_return_video_reall(self, exp_config=None):
+    def get_return_video_reall(self, exp_config=None, pre_key=None):
         if self.video_id is None:
             return  []
         recall_key = "rv:"+ str(self.video_id)
+        if pre_key :
+            recall_key = pre_key + str(self.video_id)
         #print("recall_key:", recall_key)
         data = self.redis_helper.get_data_from_redis(key_name=recall_key)