|
@@ -363,6 +363,7 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
"""
|
|
|
#1. recall
|
|
|
result = {}
|
|
|
+ result['rankResult'] = []
|
|
|
# ####### 多进程召回
|
|
|
start_recall = time.time()
|
|
|
|
|
@@ -380,8 +381,10 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
region_code = province_code
|
|
|
if region_code == '':
|
|
|
region_code = '-1'
|
|
|
+
|
|
|
+ print("region_code:", region_code)
|
|
|
|
|
|
- size =1000
|
|
|
+ #size =1000
|
|
|
pool_recall = PoolRecall(request_id=request_id,
|
|
|
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,
|
|
@@ -389,22 +392,32 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
|
|
|
t = [gevent.spawn(pool_recall.get_region_hour_recall, size, region_code),
|
|
|
gevent.spawn(pool_recall.get_region_day_recall, size, region_code),
|
|
|
- gevent.spawn(pool_recall.get_selected_recall, size),
|
|
|
- gevent.spawn(pool_recall.get_no_selected_recall, size)
|
|
|
+ gevent.spawn(pool_recall.get_selected_recall, size, region_code),
|
|
|
+ gevent.spawn(pool_recall.get_no_selected_recall, size, region_code)
|
|
|
]
|
|
|
else:
|
|
|
- t = [gevent.spawn(pool_recall.get_region_hour_recall, size),
|
|
|
- gevent.spawn(pool_recall.get_region_day_recall, size),
|
|
|
- gevent.spawn(pool_recall.get_selected_recall, size),
|
|
|
- gevent.spawn(pool_recall.get_no_selected_recall, size),
|
|
|
+ t = [gevent.spawn(pool_recall.get_region_hour_recall, size, region_code),
|
|
|
+ gevent.spawn(pool_recall.get_region_day_recall, size, region_code),
|
|
|
+ gevent.spawn(pool_recall.get_selected_recall, size, region_code),
|
|
|
+ gevent.spawn(pool_recall.get_no_selected_recall, size, region_code),
|
|
|
gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
gevent.spawn(pool_recall.flow_pool_recall, size),
|
|
|
gevent.spawn(pool_recall.get_sim_hot_item_reall)]
|
|
|
gevent.joinall(t)
|
|
|
# all recall_result
|
|
|
all_recall_result_list = [i.get() for i in t]
|
|
|
+ all_recall_result = []
|
|
|
result['recallTime'] = (time.time() - start_recall) * 1000
|
|
|
|
|
|
+ if not all_recall_result_list or len(all_recall_result_list)==0:
|
|
|
+ return result
|
|
|
+ for recall_item in all_recall_result_list:
|
|
|
+ if not recall_item or len(recall_item)==0:
|
|
|
+ continue
|
|
|
+ for per_item in recall_item:
|
|
|
+ all_recall_result.append(per_item)
|
|
|
+
|
|
|
+ #print("all_recall_result:", all_recall_result)
|
|
|
#2. duplicate
|
|
|
recall_dict = {}
|
|
|
fast_flow_set = set('')
|
|
@@ -414,15 +427,18 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
region_day_recall = []
|
|
|
select_day_recall = []
|
|
|
no_selected_recall = []
|
|
|
- for per_item in all_recall_result_list:
|
|
|
+ for per_item in all_recall_result:
|
|
|
+ #print(per_item)
|
|
|
vId = per_item.get("videoId",'0')
|
|
|
if vId=='0':
|
|
|
continue
|
|
|
recall_name = per_item.get("pushFrom",'')
|
|
|
if recall_name=='fast_flow_recall':
|
|
|
fast_flow_set.add(vId)
|
|
|
+ all_flow_set.add(vId)
|
|
|
if recall_name=='flow_recall':
|
|
|
flow_flow_set.add(vId)
|
|
|
+ all_flow_set.add(vId)
|
|
|
#duplicate divide into
|
|
|
if vId not in recall_dict:
|
|
|
if recall_name == config_.PUSH_FROM['rov_recall_region_h']:
|
|
@@ -438,19 +454,21 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
else:
|
|
|
recall_name = recall_dict[vId] + "," + recall_name
|
|
|
recall_dict[vId] = recall_name
|
|
|
- all_flow_set.add(fast_flow_set)
|
|
|
- all_flow_set.add(flow_flow_set)
|
|
|
+ #all_flow_set = set.union(fast_flow_set, flow_flow_set)
|
|
|
#3. filter video, 先过预曝光
|
|
|
filter_ = FilterVideos(request_id=request_id,
|
|
|
- app_type=app_type, mid=mid, uid=uid, video_ids=recall_dict.keys())
|
|
|
+ app_type=app_type, mid=mid, uid=uid, video_ids=list(recall_dict.keys()))
|
|
|
#a).expose filter
|
|
|
expose_filterd_videos = filter_.new_filter_video()
|
|
|
+ print("------------------expose_filterd_videos------------------------------")
|
|
|
+ print("expose_filterd_videos:",expose_filterd_videos)
|
|
|
if expose_filterd_videos is None:
|
|
|
- return
|
|
|
+ return result
|
|
|
#b). sep_filter
|
|
|
normal_video_list, flow_video_list = filter_.new_flow_video(expose_filterd_videos, all_flow_set, region_code, shield_config)
|
|
|
- if len(normal_video_list) and len(flow_video_list)==0:
|
|
|
- return
|
|
|
+ print("normal_video_list:", normal_video_list, "flow_video_list:", flow_video_list)
|
|
|
+ if len(normal_video_list)==0 and len(flow_video_list)==0:
|
|
|
+ return result
|
|
|
#4. sort: old sort: flow 按概率出
|
|
|
start_rank = time.time()
|
|
|
#quick_flow_pool_P get from redis
|
|
@@ -475,38 +493,6 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
|
|
|
result['rankResult'] = rank_result
|
|
|
result['rankTime'] = (time.time() - start_rank) * 1000
|
|
|
-
|
|
|
- # if not rank_result:
|
|
|
- # # 兜底策略
|
|
|
- # # log_.info('====== bottom strategy')
|
|
|
- # start_bottom = time.time()
|
|
|
- # 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),
|
|
|
- # # 'request_id': request_id,
|
|
|
- # # 'mid': mid,
|
|
|
- # # 'uid': uid,
|
|
|
- # # 'operation': 'bottom',
|
|
|
- # # 'bottom_result': rank_result,
|
|
|
- # # 'executeTime': (time.time() - start_bottom) * 1000
|
|
|
- # # })
|
|
|
- # result['bottomResult'] = rank_result
|
|
|
- # result['bottomTime'] = (time.time() - start_bottom) * 1000
|
|
|
- #
|
|
|
- # result['rankResult'] = rank_result
|
|
|
-
|
|
|
return result
|
|
|
# return rank_result, last_rov_recall_key
|
|
|
|
|
@@ -1322,7 +1308,9 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
+ print("ab_code:", ab_code)
|
|
|
if ab_code == "60047":
|
|
|
+ print("ab_code:", ab_code)
|
|
|
result = new_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,
|
|
@@ -1424,7 +1412,9 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
- if ab_code == "60047":
|
|
|
+ print("ab_code:", ab_code)
|
|
|
+ if ab_code == 60047:
|
|
|
+ #print("new_video_recommend:", new_video_recommend)
|
|
|
result = new_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,
|