|
@@ -180,7 +180,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
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,
|
|
|
params=params)
|
|
|
- _, last_rov_recall_key, _ = pool_recall.get_video_last_idx()
|
|
|
+ # _, 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),
|
|
@@ -192,13 +192,15 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
# 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['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:
|
|
|
- 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 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:
|
|
|
+ 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)]
|
|
|
+
|
|
|
# 最惊奇相关推荐实验
|
|
|
# elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
|
|
|
# t = [gevent.spawn(pool_recall.relevant_recall_19, video_id, size, expire_time),
|
|
@@ -220,13 +222,13 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
# t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
|
|
|
# gevent.spawn(pool_recall.flow_pool_recall, size),
|
|
|
# gevent.spawn(pool_recall.old_videos_recall, size)]
|
|
|
- else:
|
|
|
- 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, size, expire_time)]
|
|
|
- else:
|
|
|
- t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
|
|
|
- gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
- gevent.spawn(pool_recall.flow_pool_recall, size)]
|
|
|
+ # else:
|
|
|
+ # 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, size, expire_time)]
|
|
|
+ # else:
|
|
|
+ # t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
|
|
|
+ # gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
+ # gevent.spawn(pool_recall.flow_pool_recall, size)]
|
|
|
gevent.joinall(t)
|
|
|
recall_result_list = [i.get() for i in t]
|
|
|
|
|
@@ -302,14 +304,18 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
# 兜底策略
|
|
|
# log_.info('====== bottom strategy')
|
|
|
start_bottom = time.time()
|
|
|
- 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
|
|
|
- )
|
|
|
+ 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),
|
|
@@ -325,7 +331,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
|
|
|
result['rankResult'] = rank_result
|
|
|
|
|
|
- return result, last_rov_recall_key
|
|
|
+ return result
|
|
|
# return rank_result, last_rov_recall_key
|
|
|
|
|
|
|
|
@@ -369,7 +375,7 @@ def ab_test_op(rank_result, ab_code_list, app_type, mid, uid, **kwargs):
|
|
|
return rank_result
|
|
|
|
|
|
|
|
|
-def update_redis_data(result, app_type, mid, last_rov_recall_key, top_K, expire_time=24*3600):
|
|
|
+def update_redis_data(result, app_type, mid, top_K, expire_time=24*3600):
|
|
|
"""
|
|
|
根据最终的排序结果更新相关redis数据
|
|
|
:param result: 排序结果
|
|
@@ -394,17 +400,17 @@ def update_redis_data(result, app_type, mid, last_rov_recall_key, top_K, expire_
|
|
|
redis_helper.add_data_with_set(key_name=preview_key_name, values=tuple(preview_video_ids), expire_time=30 * 60)
|
|
|
# log_.info('preview redis update success!')
|
|
|
|
|
|
- # 将此次获取的ROV召回池top_K末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
|
|
|
- rov_recall_video = [item['videoId'] for item in result[:top_K]
|
|
|
- if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
|
|
|
- if len(rov_recall_video) > 0:
|
|
|
- if app_type == config_.APP_TYPE['APP']:
|
|
|
- key_name = config_.UPDATE_ROV_KEY_NAME_APP
|
|
|
- else:
|
|
|
- key_name = config_.UPDATE_ROV_KEY_NAME
|
|
|
- if not redis_helper.get_score_with_value(key_name=key_name, value=rov_recall_video[-1]):
|
|
|
- redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1],
|
|
|
- expire_time=expire_time)
|
|
|
+ # # 将此次获取的ROV召回池top_K末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
|
|
|
+ # rov_recall_video = [item['videoId'] for item in result[:top_K]
|
|
|
+ # if item['pushFrom'] == config_.PUSH_FROM['rov_recall']]
|
|
|
+ # if len(rov_recall_video) > 0:
|
|
|
+ # if app_type == config_.APP_TYPE['APP']:
|
|
|
+ # key_name = config_.UPDATE_ROV_KEY_NAME_APP
|
|
|
+ # else:
|
|
|
+ # key_name = config_.UPDATE_ROV_KEY_NAME
|
|
|
+ # if not redis_helper.get_score_with_value(key_name=key_name, value=rov_recall_video[-1]):
|
|
|
+ # redis_helper.set_data_to_redis(key_name=last_rov_recall_key, value=rov_recall_video[-1],
|
|
|
+ # expire_time=expire_time)
|
|
|
# log_.info('last video redis update success!')
|
|
|
|
|
|
# 将此次获取的 地域分组小时级数据列表 中的视频id同步刷新到redis中,方便下次快速定位到召回位置
|
|
@@ -932,15 +938,14 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
- 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,
|
|
|
- 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)
|
|
|
+ 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)
|
|
|
# log_.info({
|
|
|
# 'logTimestamp': int(time.time() * 1000),
|
|
|
# 'request_id': request_id,
|
|
@@ -961,8 +966,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
# app_type=app_type, mid=mid, uid=uid)
|
|
|
# redis数据刷新
|
|
|
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)
|
|
|
+ update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
|
|
|
# log_.info({
|
|
|
# 'logTimestamp': int(time.time() * 1000),
|
|
|
# 'request_id': request_id,
|
|
@@ -1019,18 +1023,16 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
# })
|
|
|
recommend_result['getRecommendParamsTime'] = (time.time() - param_st) * 1000
|
|
|
|
|
|
-
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
- 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,
|
|
|
- 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)
|
|
|
+ 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)
|
|
|
# log_.info({
|
|
|
# 'logTimestamp': int(time.time() * 1000),
|
|
|
# 'request_id': request_id,
|
|
@@ -1052,8 +1054,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
|
|
|
# redis数据刷新
|
|
|
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)
|
|
|
+ update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
|
|
|
# log_.info({
|
|
|
# 'logTimestamp': int(time.time() * 1000),
|
|
|
# 'request_id': request_id,
|