|
@@ -156,6 +156,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
:param params:
|
|
|
:return:
|
|
|
"""
|
|
|
+ result = {}
|
|
|
# ####### 多进程召回
|
|
|
start_recall = time.time()
|
|
|
# log_.info('====== recall')
|
|
@@ -230,16 +231,17 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
recall_result_list = [i.get() for i in t]
|
|
|
|
|
|
# end_recall = time.time()
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'recall',
|
|
|
- 'recall_result': recall_result_list,
|
|
|
- 'executeTime': (time.time() - start_recall) * 1000
|
|
|
- })
|
|
|
-
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'recall',
|
|
|
+ # 'recall_result': recall_result_list,
|
|
|
+ # 'executeTime': (time.time() - start_recall) * 1000
|
|
|
+ # })
|
|
|
+ result['recallResult'] = recall_result_list
|
|
|
+ result['recallTime'] = (time.time() - start_recall) * 1000
|
|
|
|
|
|
# ####### 排序
|
|
|
start_rank = time.time()
|
|
@@ -284,15 +286,17 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
# size=size, top_K=top_K, old_video_index=old_video_index)
|
|
|
|
|
|
# end_rank = time.time()
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'rank',
|
|
|
- 'rank_result': rank_result,
|
|
|
- 'executeTime': (time.time() - start_rank) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'rank',
|
|
|
+ # 'rank_result': rank_result,
|
|
|
+ # 'executeTime': (time.time() - start_rank) * 1000
|
|
|
+ # })
|
|
|
+ result['rankResult'] = rank_result
|
|
|
+ result['rankTime'] = (time.time() - start_rank) * 1000
|
|
|
|
|
|
if not rank_result:
|
|
|
# 兜底策略
|
|
@@ -307,17 +311,22 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
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
|
|
|
- })
|
|
|
+ # 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 rank_result, last_rov_recall_key
|
|
|
+ return result, last_rov_recall_key
|
|
|
+ # return rank_result, last_rov_recall_key
|
|
|
|
|
|
|
|
|
def ab_test_op(rank_result, ab_code_list, app_type, mid, uid, **kwargs):
|
|
@@ -899,28 +908,32 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
# top_K=top_K, expire_time=12 * 3600)
|
|
|
#
|
|
|
# else:
|
|
|
+ recommend_result = {}
|
|
|
param_st = time.time()
|
|
|
# 特殊mid 和 小程序审核版本推荐处理
|
|
|
if mid in get_special_mid_list() or version_audit_status == 1:
|
|
|
rank_result = special_mid_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size)
|
|
|
- return rank_result
|
|
|
+ recommend_result['videos'] = rank_result
|
|
|
+ return recommend_result
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, no_op_flag, old_video_index = \
|
|
|
get_recommend_params(recommend_type=0, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'get_recommend_params',
|
|
|
- 'executeTime': (time.time() - param_st) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'get_recommend_params',
|
|
|
+ # 'executeTime': (time.time() - param_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['getRecommendParamsTime'] = (time.time() - param_st) * 1000
|
|
|
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
- rank_result, last_rov_recall_key = video_recommend(request_id=request_id,
|
|
|
+ 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,
|
|
@@ -928,15 +941,19 @@ 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)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'get_recommend_result',
|
|
|
- 'executeTime': (time.time() - get_result_st) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'get_recommend_result',
|
|
|
+ # 'executeTime': (time.time() - get_result_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['recommendOperation'] = result
|
|
|
+ rank_result = result.get('rankResult')
|
|
|
+ recommend_result['videos'] = rank_result
|
|
|
+ recommend_result['getRecommendResultTime'] = (time.time() - get_result_st) * 1000
|
|
|
|
|
|
# ab-test
|
|
|
# result = ab_test_op(rank_result=rank_result,
|
|
@@ -946,17 +963,19 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
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)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'update_redis_data',
|
|
|
- 'executeTime': (time.time() - update_redis_st) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'update_redis_data',
|
|
|
+ # 'executeTime': (time.time() - update_redis_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['updateRedisDataTime'] = (time.time() - update_redis_st) * 1000
|
|
|
|
|
|
- return rank_result
|
|
|
+ return recommend_result
|
|
|
+ # return rank_result
|
|
|
|
|
|
|
|
|
def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_exp_info, client_info,
|
|
@@ -977,28 +996,34 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
:param version_audit_status: 小程序版本审核参数:1-审核中,2-审核通过
|
|
|
:return: videos type-list
|
|
|
"""
|
|
|
+ recommend_result = {}
|
|
|
param_st = time.time()
|
|
|
# 特殊mid 和 小程序审核版本推荐处理
|
|
|
if mid in get_special_mid_list() or version_audit_status == 1:
|
|
|
rank_result = special_mid_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size)
|
|
|
- return rank_result
|
|
|
+ recommend_result['videos'] = rank_result
|
|
|
+ return recommend_result
|
|
|
+ # return rank_result
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, no_op_flag, old_video_index = \
|
|
|
get_recommend_params(recommend_type=1, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data, page_type=page_type)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'get_recommend_params',
|
|
|
- 'executeTime': (time.time() - param_st) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'get_recommend_params',
|
|
|
+ # 'executeTime': (time.time() - param_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['getRecommendParamsTime'] = (time.time() - param_st) * 1000
|
|
|
+
|
|
|
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
- rank_result, last_rov_recall_key = video_recommend(request_id=request_id,
|
|
|
+ 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,
|
|
@@ -1006,15 +1031,20 @@ 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)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'get_recommend_result',
|
|
|
- 'executeTime': (time.time() - get_result_st) * 1000
|
|
|
- })
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'get_recommend_result',
|
|
|
+ # 'executeTime': (time.time() - get_result_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['recommendOperation'] = result
|
|
|
+ rank_result = result.get('rankResult')
|
|
|
+ recommend_result['videos'] = rank_result
|
|
|
+ recommend_result['getRecommendResultTime'] = (time.time() - get_result_st) * 1000
|
|
|
+
|
|
|
# ab-test
|
|
|
# result = ab_test_op(rank_result=rank_result,
|
|
|
# ab_code_list=[config_.AB_CODE['position_insert'], config_.AB_CODE['relevant_video_op']],
|
|
@@ -1024,17 +1054,19 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
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)
|
|
|
- log_.info({
|
|
|
- 'logTimestamp': int(time.time() * 1000),
|
|
|
- 'request_id': request_id,
|
|
|
- 'app_type': app_type,
|
|
|
- 'mid': mid,
|
|
|
- 'uid': uid,
|
|
|
- 'operation': 'update_redis_data',
|
|
|
- 'executeTime': (time.time() - update_redis_st) * 1000
|
|
|
- })
|
|
|
-
|
|
|
- return rank_result
|
|
|
+ # log_.info({
|
|
|
+ # 'logTimestamp': int(time.time() * 1000),
|
|
|
+ # 'request_id': request_id,
|
|
|
+ # 'app_type': app_type,
|
|
|
+ # 'mid': mid,
|
|
|
+ # 'uid': uid,
|
|
|
+ # 'operation': 'update_redis_data',
|
|
|
+ # 'executeTime': (time.time() - update_redis_st) * 1000
|
|
|
+ # })
|
|
|
+ recommend_result['updateRedisDataTime'] = (time.time() - update_redis_st) * 1000
|
|
|
+
|
|
|
+ return recommend_result
|
|
|
+ # return rank_result
|
|
|
|
|
|
|
|
|
def special_mid_recommend(request_id, mid, uid, app_type, size,
|