|
@@ -4,7 +4,7 @@ import multiprocessing
|
|
|
import traceback
|
|
|
import hashlib
|
|
|
|
|
|
-from datetime import datetime
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
|
|
import config
|
|
|
from log import Log
|
|
@@ -300,36 +300,36 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
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
|
|
|
+ # 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
|
|
@@ -515,6 +515,30 @@ def update_local_distribute_count(videos):
|
|
|
log_.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
+def get_religion_class_with_mid(mid, religion_class_name):
|
|
|
+ """
|
|
|
+ 判断用户是否属于对应的宗教类型
|
|
|
+ :param mid: mid type-string
|
|
|
+ :param religion_class_name: 宗教类型, type-string, (catholicism-天主教, christianity-基督教)
|
|
|
+ :return: religion_class_flag, type-int, (0-否,1-是), 默认: 0
|
|
|
+ """
|
|
|
+ religion_class_flag = 0
|
|
|
+ now_date = datetime.today()
|
|
|
+ redis_helper = RedisHelper()
|
|
|
+ if mid:
|
|
|
+ hash_mid = hashlib.md5(mid.encode('utf-8')).hexdigest()
|
|
|
+ hash_tag = hash_mid[-1:]
|
|
|
+ key_name_prefix = config_.KEY_NAME_PREFIX_RELIGION_USER.get(religion_class_name, None)
|
|
|
+ if key_name_prefix is None:
|
|
|
+ return religion_class_flag
|
|
|
+ key_name = f"{key_name_prefix}{hash_tag}:{datetime.strftime(now_date, '%Y%m%d')}"
|
|
|
+ if not redis_helper.key_exists(key_name=key_name):
|
|
|
+ key_name = f"{key_name_prefix}{hash_tag}:{datetime.strftime(now_date - timedelta(days=1), '%Y%m%d')}"
|
|
|
+ if redis_helper.data_exists_with_set(key_name=key_name, value=mid):
|
|
|
+ religion_class_flag = 1
|
|
|
+ return religion_class_flag
|
|
|
+
|
|
|
+
|
|
|
def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_type, page_type=0):
|
|
|
"""
|
|
|
根据实验分组给定对应的推荐参数
|
|
@@ -617,13 +641,37 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
|
|
|
# data_key = param.get('data_key')
|
|
|
# no_op_flag = True
|
|
|
|
|
|
- for code, param in config_.AB_EXP_CODE.items():
|
|
|
- if code in ab_exp_code_list:
|
|
|
- ab_code = param.get('ab_code')
|
|
|
- rule_key = param.get('rule_key')
|
|
|
- data_key = param.get('data_key')
|
|
|
- rule_key_30day = param.get('30day_rule_key')
|
|
|
- break
|
|
|
+ # 老好看视频 宗教人群实验
|
|
|
+ if '228' in ab_exp_code_list:
|
|
|
+ # 天主教
|
|
|
+ religion_param = config_.AB_EXP_CODE['228']
|
|
|
+ religion_class_name = religion_param.get('religion_class_name')
|
|
|
+ religion_class_flag = get_religion_class_with_mid(mid=mid, religion_class_name=religion_class_name)
|
|
|
+ if religion_class_flag == 1:
|
|
|
+ ab_code = religion_param.get('ab_code')
|
|
|
+ rule_key = religion_param.get('rule_key')
|
|
|
+ data_key = religion_param.get('data_key')
|
|
|
+ rule_key_30day = religion_param.get('30day_rule_key')
|
|
|
+
|
|
|
+ elif '229' in ab_exp_code_list:
|
|
|
+ # 基督教
|
|
|
+ religion_param = config_.AB_EXP_CODE['229']
|
|
|
+ religion_class_name = religion_param.get('religion_class_name')
|
|
|
+ religion_class_flag = get_religion_class_with_mid(mid=mid, religion_class_name=religion_class_name)
|
|
|
+ if religion_class_flag == 1:
|
|
|
+ ab_code = religion_param.get('ab_code')
|
|
|
+ rule_key = religion_param.get('rule_key')
|
|
|
+ data_key = religion_param.get('data_key')
|
|
|
+ rule_key_30day = religion_param.get('30day_rule_key')
|
|
|
+
|
|
|
+ else:
|
|
|
+ for code, param in config_.AB_EXP_CODE.items():
|
|
|
+ if code in ab_exp_code_list:
|
|
|
+ ab_code = param.get('ab_code')
|
|
|
+ rule_key = param.get('rule_key')
|
|
|
+ data_key = param.get('data_key')
|
|
|
+ rule_key_30day = param.get('30day_rule_key')
|
|
|
+ break
|
|
|
|
|
|
"""
|
|
|
# 推荐条数 10->4 实验
|