|
@@ -215,33 +215,33 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
exp_config = pool_recall.get_video_recall_config()
|
|
|
#print("exp_config:", exp_config)
|
|
|
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, ab_code, exp_config)]
|
|
|
+ t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time)]
|
|
|
if ab_code==60058:
|
|
|
- t.append(gevent.spawn(pool_recall.get_U2I_reall, mid, exp_config))
|
|
|
- t.append(gevent.spawn(pool_recall.get_play_reall, mid, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_play_reall, mid))
|
|
|
elif ab_code==60059:
|
|
|
- t.append(gevent.spawn(pool_recall.get_word2vec_item_reall, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
|
|
|
elif ab_code==60061 or ab_code==60063:
|
|
|
- t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
elif ab_code==60062:
|
|
|
- t.append(gevent.spawn(pool_recall.get_U2U2I_reall, mid, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2U2I_reall, mid))
|
|
|
elif ab_code==60064:
|
|
|
- t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall))
|
|
|
else:
|
|
|
- t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config),
|
|
|
+ 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==60058:
|
|
|
- t.append(gevent.spawn(pool_recall.get_U2I_reall, mid, exp_config))
|
|
|
- t.append(gevent.spawn(pool_recall.get_play_reall, mid, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_play_reall, mid))
|
|
|
elif ab_code == 60059:
|
|
|
- t.append(gevent.spawn(pool_recall.get_word2vec_item_reall, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
|
|
|
elif ab_code == 60061 or ab_code==60063:
|
|
|
- t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
elif ab_code == 60062:
|
|
|
- t.append(gevent.spawn(pool_recall.get_U2U2I_reall, mid, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2U2I_reall, mid))
|
|
|
elif ab_code==60064:
|
|
|
- t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall))
|
|
|
# 最惊奇相关推荐实验
|
|
|
# elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
|
|
|
# t = [gevent.spawn(pool_recall.relevant_recall_19, video_id, size, expire_time),
|
|
@@ -346,14 +346,14 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
#else:
|
|
|
#print("data['hot_recall']", data['hot_recall'])
|
|
|
# 60058: u2itag, 60059:word2vec, 60061: sim_recall, 60062: u2u2i
|
|
|
- if ab_code == 60058 or ab_code == 60059 or ab_code == 60060 or ab_code == 60061 \
|
|
|
- or ab_code == 60062 or ab_code== 60063 or ab_code == 60064:
|
|
|
- rank_result, flow_num = video_sank_pos_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_Code=ab_code, exp_config=exp_config)
|
|
|
- result['flow_num'] = flow_num
|
|
|
- if rank_result:
|
|
|
- result['rank_num'] = len(rank_result)
|
|
|
- else:
|
|
|
- rank_result = video_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
|
|
|
+ # if ab_code == 60058 or ab_code == 60059 or ab_code == 60060 or ab_code == 60061 \
|
|
|
+ # or ab_code == 60062 or ab_code== 60063 or ab_code == 60064:
|
|
|
+ # rank_result, flow_num = video_sank_pos_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_Code=ab_code, exp_config=exp_config)
|
|
|
+ # result['flow_num'] = flow_num
|
|
|
+ # if rank_result:
|
|
|
+ # result['rank_num'] = len(rank_result)
|
|
|
+ # else:
|
|
|
+ rank_result = video_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
|
|
|
|
|
|
# 老视频实验
|
|
|
# if ab_code in [config_.AB_CODE['old_video']]:
|
|
@@ -441,51 +441,36 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
client_info=client_info, rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
|
|
|
params=params, rule_key_30day=rule_key_30day, shield_config=shield_config, video_id= video_id)
|
|
|
|
|
|
- exp_config = None
|
|
|
- if ab_code == 60052:
|
|
|
- exp_config = pool_recall.get_flow_exp_7_config()
|
|
|
- elif ab_code == 60053:
|
|
|
- exp_config = pool_recall.get_flow_exp_8_config()
|
|
|
- elif ab_code == 60057:
|
|
|
- exp_config = pool_recall.get_flow_exp_6_config()
|
|
|
- #print("exp_config:", exp_config)
|
|
|
-
|
|
|
+ exp_config = pool_recall.get_sort_ab_codel_config()
|
|
|
+ # 60054 全量: simrecall+融合排序
|
|
|
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, ab_code, exp_config)]
|
|
|
+ t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time)]
|
|
|
if ab_code ==60054 or ab_code==60066:
|
|
|
- t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
|
|
|
- if ab_code == 60055:
|
|
|
- t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
|
|
|
- if ab_code == 60056:
|
|
|
- t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
|
|
|
- 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:'))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ if ab_code == 60056 or ab_code == 60071:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
|
|
|
+ if ab_code ==60067 or ab_code == 60069:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall))
|
|
|
+ if ab_code == 60068 or ab_code == 60070:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall, 'rv2:'))
|
|
|
else:
|
|
|
- t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config),
|
|
|
+ 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 == 60054 or ab_code==60066:
|
|
|
t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
- if ab_code == 60055:
|
|
|
- t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
|
|
|
- if ab_code == 60056:
|
|
|
- t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
|
|
|
- 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:'))
|
|
|
+ if ab_code == 60056 or ab_code == 60071:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
|
|
|
+ if ab_code == 60067 or ab_code == 60069:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall))
|
|
|
+ if ab_code == 60068 or ab_code == 60070:
|
|
|
+ t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
+ t.append(gevent.spawn(pool_recall.get_return_video_reall, 'rv2:'))
|
|
|
|
|
|
gevent.joinall(t)
|
|
|
recall_result_list = [i.get() for i in t]
|
|
@@ -495,7 +480,7 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
result['recallResult']= []
|
|
|
result['rankResult'] = []
|
|
|
return result
|
|
|
- #1. merge simrecall
|
|
|
+ #1. merge simrecall or deepfm
|
|
|
if ab_code == 60054 or ab_code==60066:
|
|
|
rov_pool_recall = []
|
|
|
if len(recall_result_list) >= 2:
|
|
@@ -522,35 +507,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
now_video_ids.add(video_id)
|
|
|
if len(rov_pool_recall) > 0:
|
|
|
recall_result_list[0] = rov_pool_recall
|
|
|
- # merge return video
|
|
|
- if ab_code == 60055 or ab_code==60065:
|
|
|
- rov_pool_recall = []
|
|
|
- if len(recall_result_list)>=2:
|
|
|
- region_recall = recall_result_list[0]
|
|
|
- return_video_reall = []
|
|
|
- if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
|
|
|
- return_video_reall, = recall_result_list[1]
|
|
|
- else:
|
|
|
- if len(recall_result_list)>=4:
|
|
|
- return_video_reall = recall_result_list[3]
|
|
|
- #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(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
|
|
|
- # merge simrecall, merge u2i title recall
|
|
|
- if ab_code == 60056:
|
|
|
+ # merge simrecall, merge u2i title recall, deepfm
|
|
|
+ if ab_code == 60056 or ab_code == 60071:
|
|
|
rov_pool_recall = []
|
|
|
if len(recall_result_list)>=2:
|
|
|
region_recall = recall_result_list[0]
|
|
@@ -565,6 +523,7 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
sim_recall = recall_result_list[3]
|
|
|
if len(recall_result_list) >= 5:
|
|
|
u2i_title_recall = recall_result_list[4]
|
|
|
+ #print("u2i_title_recall:", u2i_title_recall)
|
|
|
now_video_ids = set('')
|
|
|
if len(region_recall)>0:
|
|
|
for video in region_recall:
|
|
@@ -589,7 +548,7 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
recall_result_list[0] = rov_pool_recall
|
|
|
|
|
|
#2. merge simrecall, return video
|
|
|
- if ab_code == 60067 or ab_code==60068:
|
|
|
+ if ab_code == 60067 or ab_code==60068 or ab_code==60069 or ab_code==60070:
|
|
|
rov_pool_recall = []
|
|
|
if len(recall_result_list)>=2:
|
|
|
region_recall = recall_result_list[0]
|
|
@@ -665,40 +624,46 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
'flow_pool_recall': recall_result_list[2]
|
|
|
}
|
|
|
# 3. 特征回流
|
|
|
- #print(env_dict)
|
|
|
+ rec_recall_list = []
|
|
|
+ vidKeys = []
|
|
|
+ hour_vidKeys = []
|
|
|
+ pre_str = "v_ctr:"
|
|
|
+ pre_hour_str = "v_hour_ctr:"
|
|
|
+ rec_recall_item_list = []
|
|
|
+ for recall_item in data['rov_pool_recall']:
|
|
|
+ if len(recall_item) <= 0:
|
|
|
+ continue
|
|
|
+ vid = recall_item.get("videoId", 0)
|
|
|
+ rec_recall_list.append(vid)
|
|
|
+ vidKeys.append(pre_str + str(vid))
|
|
|
+ hour_vidKeys.append(pre_hour_str + str(vid))
|
|
|
+ rec_recall_item_list.append(recall_item)
|
|
|
+ redisObj = RedisHelper()
|
|
|
+ video_static_info = redisObj.get_batch_key(vidKeys)
|
|
|
+ video_hour_static_info = redisObj.get_batch_key(hour_vidKeys)
|
|
|
+ vid_day_fea_list = []
|
|
|
+ vid_hour_fea_list = []
|
|
|
+ if video_static_info:
|
|
|
+ vid_day_fea_list = video_static_info
|
|
|
+ if video_hour_static_info:
|
|
|
+ vid_hour_fea_list = video_hour_static_info
|
|
|
if env_dict:
|
|
|
- province_code = client_info.get('provinceCode', '-1')
|
|
|
- city_code = client_info.get('cityCode', '-1')
|
|
|
+ province_code = client_info.get('provinceCode', -1)
|
|
|
+ if province_code and province_code == "":
|
|
|
+ province_code =-1
|
|
|
+ city_code = client_info.get('cityCode', -1)
|
|
|
+ if city_code and city_code == "":
|
|
|
+ city_code = -1
|
|
|
env_dict['mid'] = mid
|
|
|
env_dict['province_code'] = province_code
|
|
|
env_dict['city_code'] = city_code
|
|
|
- rec_recall_list = []
|
|
|
- vidKeys = []
|
|
|
- hour_vidKeys = []
|
|
|
- pre_str = "v_ctr:"
|
|
|
- pre_hour_str = "v_hour_ctr:"
|
|
|
- for recall_item in data['rov_pool_recall']:
|
|
|
- if len(recall_item) <= 0:
|
|
|
- continue
|
|
|
- vid = recall_item.get("videoId", 0)
|
|
|
- rec_recall_list.append(vid)
|
|
|
- vidKeys.append(pre_str + str(vid))
|
|
|
- hour_vidKeys.append(pre_hour_str + str(vid))
|
|
|
- redisObj = RedisHelper()
|
|
|
- video_static_info = redisObj.get_batch_key(vidKeys)
|
|
|
- video_hour_static_info = redisObj.get_batch_key(hour_vidKeys)
|
|
|
- vid_day_fea_list = []
|
|
|
- vid_hour_fea_list = []
|
|
|
- if video_static_info:
|
|
|
- vid_day_fea_list = video_static_info
|
|
|
- if video_hour_static_info:
|
|
|
- vid_hour_fea_list = video_hour_static_info
|
|
|
+
|
|
|
env_dict['recall_list'] = rec_recall_list
|
|
|
env_dict['vid_day_fea_list'] = vid_day_fea_list
|
|
|
env_dict['vid_hour_fea_list'] = vid_hour_fea_list
|
|
|
env_json = env_dict
|
|
|
#4.
|
|
|
- rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict)
|
|
|
+ rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict, rec_recall_item_list=rec_recall_item_list)
|
|
|
#print(rank_result)
|
|
|
if rank_result:
|
|
|
result['rank_num'] = len(rank_result)
|
|
@@ -1719,14 +1684,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)
|
|
|
- # 60052,60053,60057(test7, test8, test6) 融合排序
|
|
|
- # simrecal: 60054 +融合
|
|
|
+ # 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 \
|
|
|
- or ab_code==60065 or ab_code == 60067 or ab_code==60068 \
|
|
|
- or ab_code==60066:
|
|
|
+ elif ab_code == 60054 \
|
|
|
+ or ab_code == 60056 \
|
|
|
+ or ab_code == 60067 or ab_code==60068 \
|
|
|
+ or ab_code==60066 or ab_code == 60069 or ab_code == 60070 or ab_code == 60071:
|
|
|
result, fea_info = 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,
|
|
@@ -1769,9 +1733,6 @@ 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 == 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({
|
|
@@ -1844,9 +1805,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)
|
|
|
- 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 or ab_code==60066:
|
|
|
+ elif ab_code == 60054 or \
|
|
|
+ ab_code == 60056 or ab_code ==60067 \
|
|
|
+ or ab_code ==60068 or ab_code==60066 or ab_code == 60069 or ab_code == 60070 or ab_code == 60071:
|
|
|
result, fea_info = 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,
|
|
@@ -1890,11 +1851,6 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
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:
|
|
|
- # 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({
|