|
@@ -136,9 +136,9 @@ def positon_duplicate(pos1_vids, pos2_vids, videos):
|
|
|
return l
|
|
|
|
|
|
|
|
|
-def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, algo_type, client_info, expire_time=24*3600,
|
|
|
- ab_code=config_.AB_CODE['initial'], rule_key='', no_op_flag=False, old_video_index=-1, video_id=None,
|
|
|
- params=None):
|
|
|
+def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, algo_type, client_info,
|
|
|
+ expire_time=24*3600, ab_code=config_.AB_CODE['initial'], rule_key='', data_key='',
|
|
|
+ no_op_flag=False, old_video_index=-1, video_id=None, params=None):
|
|
|
"""
|
|
|
首页线上推荐逻辑
|
|
|
:param request_id: request_id
|
|
@@ -177,21 +177,21 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
recall_result_list = []
|
|
|
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, no_op_flag=no_op_flag,
|
|
|
+ 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()
|
|
|
- # 小时级实验
|
|
|
- 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),
|
|
|
- gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
- gevent.spawn(pool_recall.flow_pool_recall, size)]
|
|
|
- # 小时级实验
|
|
|
- elif ab_code in [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
|
|
|
- t = [gevent.spawn(pool_recall.rov_pool_recall_by_h, 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['rank_by_h'].items()]:
|
|
|
+ # t = [gevent.spawn(pool_recall.rule_recall_by_h, 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 in [code for _, code in config_.AB_CODE['rank_by_24h'].items()]:
|
|
|
+ # t = [gevent.spawn(pool_recall.rov_pool_recall_by_h, 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 in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
|
|
|
+ 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:
|
|
@@ -209,11 +209,11 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
elif 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),
|
|
|
gevent.spawn(pool_recall.flow_pool_recall_18_19, size)]
|
|
|
- # 天级实验
|
|
|
- elif ab_code in [code for _, code in config_.AB_CODE['rank_by_day'].items()]:
|
|
|
- t = [gevent.spawn(pool_recall.rov_pool_recall_by_day, 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 in [code for _, code in config_.AB_CODE['rank_by_day'].items()]:
|
|
|
+ # t = [gevent.spawn(pool_recall.rov_pool_recall_by_day, 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 in [config_.AB_CODE['old_video']]:
|
|
|
# t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
|
|
@@ -459,7 +459,8 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, page_type=0)
|
|
|
if not ab_exp_info:
|
|
|
ab_code = config_.AB_CODE['initial']
|
|
|
expire_time = 24 * 3600
|
|
|
- rule_key = config_.RULE_KEY['initial']
|
|
|
+ rule_key = config_.RULE_KEY_REGION['initial'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['initial'].get('data_key')
|
|
|
# old_video_index = -1
|
|
|
else:
|
|
|
ab_exp_code_list = []
|
|
@@ -567,53 +568,76 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, page_type=0)
|
|
|
# no_op_flag = True
|
|
|
|
|
|
if config_.AB_EXP_CODE['region_rule_rank3'] in ab_exp_code_list or\
|
|
|
- config_.AB_EXP_CODE['region_rule_rank3_appType_5'] in ab_exp_code_list or\
|
|
|
config_.AB_EXP_CODE['region_rule_rank3_appType_19'] in ab_exp_code_list or\
|
|
|
config_.AB_EXP_CODE['region_rule_rank3_appType_4'] in ab_exp_code_list or\
|
|
|
config_.AB_EXP_CODE['region_rule_rank3_appType_6'] in ab_exp_code_list or\
|
|
|
config_.AB_EXP_CODE['region_rule_rank3_appType_18'] in ab_exp_code_list:
|
|
|
ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3')
|
|
|
expire_time = 3600
|
|
|
- rule_key = config_.RULE_KEY_REGION['region_rule_rank3']
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank3'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank3'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
elif config_.AB_EXP_CODE['region_rule_rank4'] in ab_exp_code_list:
|
|
|
ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank4')
|
|
|
expire_time = 3600
|
|
|
- rule_key = config_.RULE_KEY_REGION['region_rule_rank4']
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
- else:
|
|
|
- ab_code = config_.AB_CODE['initial']
|
|
|
- expire_time = 24 * 3600
|
|
|
- rule_key = config_.RULE_KEY['initial']
|
|
|
-
|
|
|
- # 老好看视频 / 票圈最惊奇 首页/相关推荐逻辑更新实验
|
|
|
- if config_.AB_EXP_CODE['rov_rank_appType_18_19'] in ab_exp_code_list:
|
|
|
- ab_code = config_.AB_CODE['rov_rank_appType_18_19']
|
|
|
+ elif config_.AB_EXP_CODE['region_rule_rank3_appType_5_data1'] in ab_exp_code_list:
|
|
|
+ ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3')
|
|
|
expire_time = 3600
|
|
|
- flow_pool_P = config_.P_18_19
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data1'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data1'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
- elif config_.AB_EXP_CODE['rov_rank_appType_19'] in ab_exp_code_list:
|
|
|
- ab_code = config_.AB_CODE['rov_rank_appType_19']
|
|
|
+ elif config_.AB_EXP_CODE['region_rule_rank3_appType_5_data2'] in ab_exp_code_list:
|
|
|
+ ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3_appType_5_data2')
|
|
|
expire_time = 3600
|
|
|
- top_K = 0
|
|
|
- flow_pool_P = config_.P_18_19
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data2'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data2'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
- elif config_.AB_EXP_CODE['top_video_relevant_appType_19'] in ab_exp_code_list and page_type == 2:
|
|
|
- ab_code = config_.AB_CODE['top_video_relevant_appType_19']
|
|
|
+ elif config_.AB_EXP_CODE['region_rule_rank3_appType_5_data3'] in ab_exp_code_list:
|
|
|
+ ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3_appType_5_data3')
|
|
|
expire_time = 3600
|
|
|
- top_K = 1
|
|
|
- flow_pool_P = config_.P_18_19
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data3'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank3_appType_5_data3'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
- # 票圈最惊奇完整影视资源实验
|
|
|
- elif config_.AB_EXP_CODE['whole_movies'] in ab_exp_code_list:
|
|
|
- ab_code = config_.AB_CODE['whole_movies']
|
|
|
+ else:
|
|
|
+ ab_code = config_.AB_CODE['initial']
|
|
|
expire_time = 24 * 3600
|
|
|
- no_op_flag = True
|
|
|
+ rule_key = config_.RULE_KEY_REGION['initial'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['initial'].get('data_key')
|
|
|
+
|
|
|
+ # # 老好看视频 / 票圈最惊奇 首页/相关推荐逻辑更新实验
|
|
|
+ # if config_.AB_EXP_CODE['rov_rank_appType_18_19'] in ab_exp_code_list:
|
|
|
+ # ab_code = config_.AB_CODE['rov_rank_appType_18_19']
|
|
|
+ # expire_time = 3600
|
|
|
+ # flow_pool_P = config_.P_18_19
|
|
|
+ # no_op_flag = True
|
|
|
+ #
|
|
|
+ # elif config_.AB_EXP_CODE['rov_rank_appType_19'] in ab_exp_code_list:
|
|
|
+ # ab_code = config_.AB_CODE['rov_rank_appType_19']
|
|
|
+ # expire_time = 3600
|
|
|
+ # top_K = 0
|
|
|
+ # flow_pool_P = config_.P_18_19
|
|
|
+ # no_op_flag = True
|
|
|
+ #
|
|
|
+ # elif config_.AB_EXP_CODE['top_video_relevant_appType_19'] in ab_exp_code_list and page_type == 2:
|
|
|
+ # ab_code = config_.AB_CODE['top_video_relevant_appType_19']
|
|
|
+ # expire_time = 3600
|
|
|
+ # top_K = 1
|
|
|
+ # flow_pool_P = config_.P_18_19
|
|
|
+ # no_op_flag = True
|
|
|
+ #
|
|
|
+ # # 票圈最惊奇完整影视资源实验
|
|
|
+ # elif config_.AB_EXP_CODE['whole_movies'] in ab_exp_code_list:
|
|
|
+ # ab_code = config_.AB_CODE['whole_movies']
|
|
|
+ # expire_time = 24 * 3600
|
|
|
+ # no_op_flag = True
|
|
|
|
|
|
# 老视频实验
|
|
|
# if config_.AB_EXP_CODE['old_video'] in ab_exp_code_list:
|
|
@@ -638,17 +662,19 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, page_type=0)
|
|
|
if config_.APP_AB_CODE['10003'] == ab_info_app.get('10003', None):
|
|
|
ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3')
|
|
|
expire_time = 3600
|
|
|
- rule_key = config_.RULE_KEY_REGION['region_rule_rank3']
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
# 相关推荐
|
|
|
elif recommend_type == 1:
|
|
|
if config_.APP_AB_CODE['10037'] == ab_info_app.get('10037', None):
|
|
|
ab_code = config_.AB_CODE['region_rank_by_h'].get('region_rule_rank3')
|
|
|
expire_time = 3600
|
|
|
- rule_key = config_.RULE_KEY_REGION['region_rule_rank3']
|
|
|
+ rule_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('rule_key')
|
|
|
+ data_key = config_.RULE_KEY_REGION['region_rule_rank4'].get('data_key')
|
|
|
no_op_flag = True
|
|
|
|
|
|
- return top_K, flow_pool_P, ab_code, rule_key, expire_time, no_op_flag, old_video_index
|
|
|
+ return top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, no_op_flag, old_video_index
|
|
|
|
|
|
|
|
|
def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
@@ -711,7 +737,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
return rank_result
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
- top_K, flow_pool_P, ab_code, rule_key, expire_time, no_op_flag, old_video_index = \
|
|
|
+ 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),
|
|
@@ -730,8 +756,8 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_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, no_op_flag=no_op_flag,
|
|
|
- old_video_index=old_video_index,
|
|
|
+ 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),
|
|
@@ -788,7 +814,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
return rank_result
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
- top_K, flow_pool_P, ab_code, rule_key, expire_time, no_op_flag, old_video_index = \
|
|
|
+ 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),
|
|
@@ -807,7 +833,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
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, no_op_flag=no_op_flag,
|
|
|
+ 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({
|