#coding utf-8 from db_helper import RedisHelper from config import set_config from utils import request_post_data import json from log import Log log_ = Log() config_ = set_config() def get_featurs(mid, data, size, top_K, flow_pool_P, env_dict=None): recall_list = [] vidKeys = [] feature_dict = {} # defult value apptype = 4 pagesource = "" versioncode = "580" machineinfo_brand="HUAWEI" recommendsource = "0" machineinfo_platform = 'android' sencetype = 100078 machineinfo_model ='M2006C3LC' if env_dict and len(env_dict)>0: apptype = env_dict.get('app_type',4) pagesource = env_dict.get('pagesource', '') versioncode = env_dict.get('versioncode', 0) machineinfo_brand = env_dict.get('machineinfo_brand', '') machineinfo_model = env_dict.get('machineinfo_model', '') recommendsource = env_dict.get('recommendsource', '0') machineinfo_platform = env_dict.get('machineinfo_platform', '') sencetype = env_dict.get('sencetype', '') redisObj = RedisHelper() pre_str = "v_ctr:" hour_pre_str = "v_hour_ctr:" hour_vidKeys = [] mid_list = [] videoid_list = [] apptype_list = [] pagesource_list = [] versioncode_list = [] machineinfo_brand_list = [] machineinfo_model_list = [] recommendsource_list = [] machineinfo_platform_list = [] sencetype_list = [] day_rov_list = [] day_share_return_score_list = [] day_share_score_list = [] day_return_rate_list = [] day_ctr_score_list = [] day_play_pv_list = [] day_play_users_list = [] day_return_users_list = [] day_share_pv_list = [] day_view_pv_list = [] day_view_users_list = [] day_share_users = [] for recall_item in data['rov_pool_recall']: if len(recall_item)<=0: continue vid = recall_item.get("videoId",0) mid_list.append(mid) videoid_list.append(int(vid)) apptype_list.append(apptype) pagesource_list.append(pagesource) versioncode_list.append(versioncode) machineinfo_brand_list.append(machineinfo_brand) machineinfo_model_list.append(machineinfo_model) recommendsource_list.append(recommendsource) machineinfo_platform_list.append(machineinfo_platform) sencetype_list.append(sencetype) vidKeys.append(pre_str + str(vid)) hour_vidKeys.append(hour_pre_str+str(vid)) recall_list.append(recall_item) #print("vidKeys:", vidKeys) video_static_info = redisObj.get_batch_key(vidKeys) video_hour_static_info = redisObj.get_batch_key(hour_vidKeys) #print("video_static_info:",video_static_info) if video_static_info: for i in range(len(video_static_info)): try: # print(video_scores[i]) vid = vidKeys[i].replace(pre_str,"") if video_static_info[i] : per_video_staic = json.loads(video_static_info[i]) day_rov_list.append(float(per_video_staic[0])) day_share_return_score_list.append(float(per_video_staic[1])) day_share_score_list.append(float(per_video_staic[2])) day_return_rate_list.append(float(per_video_staic[3])) day_ctr_score_list.append(float(per_video_staic[4])) # day_view_users_list.append(int(per_video_staic[5])) # day_view_pv_list.append(int(per_video_staic[6])) # day_play_users_list.append(int(per_video_staic[7])) # day_play_pv_list.append(int(per_video_staic[8])) # day_share_users.append(int(per_video_staic[9])) # day_share_pv_list.append(int(per_video_staic[10])) # day_return_users_list.append(int(per_video_staic[11])) else: insert_static_default_fea(day_ctr_score_list, day_play_pv_list, day_play_users_list, day_return_rate_list, day_return_users_list, day_rov_list, day_share_pv_list, day_share_return_score_list, day_share_score_list, day_share_users, day_view_pv_list, day_view_users_list) except Exception: insert_static_default_fea(day_ctr_score_list, day_play_pv_list, day_play_users_list, day_return_rate_list, day_return_users_list, day_rov_list, day_share_pv_list, day_share_return_score_list, day_share_score_list, day_share_users, day_view_pv_list, day_view_users_list) else: for i in range(len(recall_list)): insert_static_default_fea(day_ctr_score_list, day_play_pv_list, day_play_users_list, day_return_rate_list, day_return_users_list, day_rov_list, day_share_pv_list, day_share_return_score_list, day_share_score_list, day_share_users, day_view_pv_list, day_view_users_list) hour_rov_list = [] hour_share_return_score_list =[] hour_share_score_list =[] hour_return_rate_list = [] hour_ctr_score_list = [] if video_hour_static_info: for i in range(len(video_hour_static_info)): try: # print(video_scores[i]) vid = hour_vidKeys[i].replace(hour_pre_str,"") if video_hour_static_info[i] : per_hour_video_staic = json.loads(video_hour_static_info[i]) hour_rov_list.append(float(per_hour_video_staic[0])) hour_share_return_score_list.append(float(per_hour_video_staic[1])) hour_share_score_list.append(float(per_hour_video_staic[2])) hour_return_rate_list.append(float(per_hour_video_staic[3])) hour_ctr_score_list.append(float(per_hour_video_staic[4])) else: hour_rov_list.append(0.0) hour_share_return_score_list.append(0.0) hour_share_score_list.append(0.0) hour_return_rate_list.append(0.0) hour_ctr_score_list.append(0.0) except Exception: hour_rov_list.append(0.0) hour_share_return_score_list.append(0.0) hour_share_score_list.append(0.0) hour_return_rate_list.append(0.0) hour_ctr_score_list.append(0.0) else: for i in range(len(recall_list)): hour_rov_list.append(0.0) hour_share_return_score_list.append(0.0) hour_share_score_list.append(0.0) hour_return_rate_list.append(0.0) hour_ctr_score_list.append(0.0) feature_dict["mid_list"] = mid_list feature_dict["videoid_list"] = videoid_list feature_dict["apptype_list"] = apptype_list feature_dict["pagesource_list"] = pagesource_list feature_dict["versioncode_list"] = versioncode_list feature_dict["machineinfo_brand_list"] = machineinfo_brand_list feature_dict["machineinfo_model_list"] = machineinfo_model_list feature_dict["recommendsource_list"] = recommendsource_list feature_dict["machineinfo_model_list"] = machineinfo_model_list feature_dict["machineinfo_platform_list"] = machineinfo_platform_list feature_dict["sencetype_list"] = sencetype_list feature_dict["day_rov_list"] = day_rov_list feature_dict["day_share_return_score_list"] = day_share_return_score_list feature_dict["day_share_score_list"] = day_share_score_list feature_dict["day_return_rate_list"] = day_return_rate_list feature_dict["day_ctr_score_list"] = day_ctr_score_list # feature_dict["day_play_pv_list"] = day_play_pv_list # feature_dict["day_play_users_list"] = day_play_users_list # feature_dict["day_return_users_list"] = day_return_users_list # feature_dict["day_share_pv_list"] = day_share_pv_list # feature_dict["day_view_pv_list"] = day_view_pv_list # feature_dict["day_view_users_list"] = day_view_users_list # feature_dict["day_share_users_list"] = day_share_users feature_dict["hour_rov_list"] = hour_rov_list feature_dict["hour_share_return_score_list"] = hour_share_return_score_list feature_dict["hour_share_score_list"] = hour_share_score_list feature_dict["hour_return_rate_list"] = hour_return_rate_list feature_dict["hour_ctr_score_list"] = hour_ctr_score_list return feature_dict, recall_list def insert_static_default_fea(day_ctr_score_list, day_play_pv_list, day_play_users_list, day_return_rate_list, day_return_users_list, day_rov_list, day_share_pv_list, day_share_return_score_list, day_share_score_list, day_share_users, day_view_pv_list, day_view_users_list): day_rov_list.append(0.0) day_share_return_score_list.append(0.0) day_share_score_list.append(0.0) day_return_rate_list.append(0.0) day_ctr_score_list.append(0.0) # day_view_users_list.append(0) # day_view_pv_list.append(0) # day_play_users_list.append(0) # day_play_pv_list.append(0) # day_share_users.append(0) # day_share_pv_list.append(0) # day_return_users_list.append(0) def get_tf_serving_sores(feature_dict): #for k, v in feature_dict: inputs_data = { "mid": feature_dict["mid_list"], "videoid": feature_dict["videoid_list"], "apptype": feature_dict["apptype_list"], "pagesource": feature_dict["pagesource_list"], "versioncode": feature_dict["versioncode_list"], "machineinfo_brand": feature_dict["machineinfo_brand_list"], "machineinfo_model": feature_dict["machineinfo_model_list"], "recommendsource": feature_dict["recommendsource_list"], "machineinfo_platform": feature_dict["machineinfo_platform_list"], "sencetype": feature_dict["sencetype_list"], "day_rov": feature_dict["day_rov_list"], "day_share_return_score": feature_dict["day_share_return_score_list"], "day_share_score": feature_dict["day_share_score_list"], "day_return_rate": feature_dict["day_return_rate_list"], "day_ctr_score": feature_dict["day_ctr_score_list"], # "day_play_pv": feature_dict["day_play_pv_list"], # "day_play_users": feature_dict["day_play_users_list"], # "day_share_pv": feature_dict["day_share_pv_list"], # "day_return_users": feature_dict["day_return_users_list"], # "day_share_users": feature_dict["day_share_users_list"], # "day_view_pv": feature_dict["day_view_pv_list"], # "day_view_users":feature_dict["day_view_users_list"], "hour_rov": feature_dict["hour_rov_list"], "hour_share_score": feature_dict["hour_share_score_list"], "hour_share_return_score": feature_dict["hour_share_return_score_list"], "hour_return_rate": feature_dict["hour_return_rate_list"], "hour_ctr_score": feature_dict["hour_ctr_score_list"] } request_data_dict= {} request_data_dict["inputs"] = inputs_data #print(request_data_dict) request_data= json.dumps(request_data_dict) #print(request_data) # 调用http接口 result = request_post_data(config_.TF_SERVING_URL,request_data, timeout=(0.1, 1)) # print("result:", result) if result is None: print("result is None") log_.info('call tf serving error,types: {}') return [] #print(result) return result