|
@@ -229,8 +229,8 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
t.append(gevent.spawn(pool_recall.get_return_video_reall))
|
|
|
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)]
|
|
|
+ gevent.spawn(pool_recall.flow_pool_recall_new, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
+ gevent.spawn(pool_recall.flow_pool_recall_new, size)]
|
|
|
if ab_code==60058:
|
|
|
t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
|
|
|
t.append(gevent.spawn(pool_recall.get_play_reall, mid))
|
|
@@ -458,8 +458,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
# 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),
|
|
|
- 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.flow_pool_recall_new, size, config_.QUICK_FLOW_POOL_ID),
|
|
|
+ gevent.spawn(pool_recall.flow_pool_recall_new, size)]
|
|
|
if ab_code == 60054 or ab_code == 60066 or ab_code == 60072 or ab_code == 60073:
|
|
|
t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
elif ab_code == 60056 or ab_code == 60071:
|
|
@@ -1008,7 +1008,8 @@ def update_redis_data(result, app_type, mid, top_K, expire_time=24*3600):
|
|
|
else:
|
|
|
flow_recall_video = [item for item in result if item['pushFrom'] == config_.PUSH_FROM['flow_recall']]
|
|
|
if flow_recall_video:
|
|
|
- update_local_distribute_count(flow_recall_video)
|
|
|
+ # update_local_distribute_count(flow_recall_video)
|
|
|
+ update_local_distribute_count_new(flow_recall_video)
|
|
|
# log_.info('update local distribute count success!')
|
|
|
|
|
|
# 限流视频分发数记录
|
|
@@ -1146,6 +1147,61 @@ def update_local_distribute_count(videos):
|
|
|
log_.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
+def update_local_distribute_count_new(videos):
|
|
|
+ """
|
|
|
+ 更新本地分发数
|
|
|
+ :param videos: 视频列表 type-list [{'videoId':'', 'flowPool':'', 'distributeCount': '',
|
|
|
+ 'rovScore': '', 'pushFrom': 'flow_pool', 'abCode': self.ab_code}, ....]
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ redis_helper = RedisHelper()
|
|
|
+ for item in videos:
|
|
|
+ video_id, flow_pool = item['videoId'], item['flowPool']
|
|
|
+ key_name = f"{config_.LOCAL_DISTRIBUTE_COUNT_PREFIX}{video_id}:{flow_pool}"
|
|
|
+ # 本地记录的分发数 - 1
|
|
|
+ redis_helper.decr_key(key_name=key_name, amount=1, expire_time=15 * 60)
|
|
|
+ # 对该视频做分发数检查
|
|
|
+ cur_count = redis_helper.get_data_from_redis(key_name=key_name)
|
|
|
+ # 无记录
|
|
|
+ if cur_count is None:
|
|
|
+ continue
|
|
|
+ # 本地分发数 cur_count <= 0,从所有的流量召回池移除,删除本地分发记录key
|
|
|
+ if int(cur_count) <= 0:
|
|
|
+ add_remove_log = False
|
|
|
+ redis_helper.del_keys(key_name=key_name)
|
|
|
+ for app_name in config_.APP_TYPE:
|
|
|
+ app_type = config_.APP_TYPE.get(app_name)
|
|
|
+ flow_pool_key_list = [
|
|
|
+ f"{config_.FLOWPOOL_KEY_NAME_PREFIX_SET}{app_type}",
|
|
|
+ f"{config_.QUICK_FLOWPOOL_KEY_NAME_PREFIX_SET}{app_type}:{config_.QUICK_FLOW_POOL_ID}"
|
|
|
+ ]
|
|
|
+ for key in flow_pool_key_list:
|
|
|
+ remove_res = redis_helper.remove_value_from_set(key_name=key,
|
|
|
+ values=(f"{video_id}-{flow_pool}", ))
|
|
|
+ if remove_res > 0:
|
|
|
+ add_remove_log = True
|
|
|
+ video_flow_pool_key_list = [
|
|
|
+ f"{config_.QUICK_FLOWPOOL_VIDEO_INFO_KEY_NAME_PREFIX}{app_type}:{config_.QUICK_FLOW_POOL_ID}:{video_id}",
|
|
|
+ f"{config_.FLOWPOOL_VIDEO_INFO_KEY_NAME_PREFIX}{app_type}:{video_id}"
|
|
|
+ ]
|
|
|
+ for key in video_flow_pool_key_list:
|
|
|
+ redis_helper.remove_value_from_set(key_name=key, values=(flow_pool, ))
|
|
|
+ if add_remove_log is True:
|
|
|
+ log_.info({'tag': 'remove video_id from flow_pool', 'video_id': video_id, 'flow_pool': flow_pool})
|
|
|
+
|
|
|
+ # if redis_helper.key_exists(key_name=key_name):
|
|
|
+ # # 该视频本地有记录,本地记录的分发数 - 1
|
|
|
+ # redis_helper.decr_key(key_name=key_name, amount=1, expire_time=5 * 60)
|
|
|
+ # else:
|
|
|
+ # # 该视频本地无记录,接口获取的分发数 - 1
|
|
|
+ # redis_helper.incr_key(key_name=key_name, amount=int(item['distributeCount']) - 1, expire_time=5 * 60)
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ log_.error('update_local_distribute_count error...')
|
|
|
+ log_.error(traceback.format_exc())
|
|
|
+
|
|
|
+
|
|
|
def get_religion_class_with_mid(mid, religion_class_name):
|
|
|
"""
|
|
|
判断用户是否属于对应的宗教类型
|
|
@@ -1686,19 +1742,19 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
get_result_st = time.time()
|
|
|
#print("ab_code:", ab_code)
|
|
|
#new pipeline
|
|
|
- if ab_code == 60047 or ab_code == 60048 or ab_code == 60049:
|
|
|
- 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,
|
|
|
- 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, rule_key_30day=rule_key_30day, shield_config=shield_config)
|
|
|
+ # if ab_code == 60047 or ab_code == 60048 or ab_code == 60049:
|
|
|
+ # 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,
|
|
|
+ # 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, rule_key_30day=rule_key_30day, shield_config=shield_config)
|
|
|
# simrecal: 60054 +融合, 全量
|
|
|
# return video, return video2
|
|
|
# old video: 60056, test2
|
|
|
- elif ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066 \
|
|
|
+ if 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 or ab_code == 60072 or ab_code == 60073:
|
|
|
result, fea_info = video_old_recommend(request_id=request_id,
|
|
|
mid=mid, uid=uid, app_type=app_type,
|
|
@@ -1740,10 +1796,13 @@ 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()
|
|
|
- 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)
|
|
|
- else:
|
|
|
- update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
|
|
|
+ # 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)
|
|
|
+ # else:
|
|
|
+ # update_redis_data(result=rank_result, app_type=app_type, mid=mid, 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,
|
|
@@ -1805,16 +1864,16 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
# 简单召回 - 排序 - 兜底
|
|
|
get_result_st = time.time()
|
|
|
#print("ab_code:", ab_code)
|
|
|
- if ab_code == 60047 or ab_code == 60048 or ab_code == 60049:
|
|
|
- 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,
|
|
|
- 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, rule_key_30day=rule_key_30day, shield_config=shield_config)
|
|
|
- elif ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066\
|
|
|
+ # if ab_code == 60047 or ab_code == 60048 or ab_code == 60049:
|
|
|
+ # 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,
|
|
|
+ # 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, rule_key_30day=rule_key_30day, shield_config=shield_config)
|
|
|
+ if 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 or ab_code == 60072 or ab_code == 60073:
|
|
|
result, fea_info = video_old_recommend(request_id=request_id,
|
|
|
mid=mid, uid=uid, app_type=app_type,
|
|
@@ -1857,10 +1916,13 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
|
|
|
# redis数据刷新
|
|
|
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)
|
|
|
- else:
|
|
|
- update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
|
|
|
+ # 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)
|
|
|
+ # else:
|
|
|
+ # update_redis_data(result=rank_result, app_type=app_type, mid=mid, 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,
|