| 
					
				 | 
			
			
				@@ -1,4 +1,5 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import random 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lightgbm as lgb 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -8,9 +9,9 @@ from sklearn.model_selection import train_test_split 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from sklearn.metrics import mean_absolute_error, r2_score, mean_absolute_percentage_error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from config import set_config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from utils import read_from_pickle, write_to_pickle, data_normalization, request_post 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from utils import read_from_pickle, write_to_pickle, data_normalization, request_post, filter_video_status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from log import Log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from db_helper import RedisHelper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from db_helper import RedisHelper, MysqlHelper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 config_ = set_config() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 log_ = Log() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -170,6 +171,43 @@ def predict(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log_.error('notify backend fail!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def predict_test(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """测试环境数据生成""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 获取测试环境中最近发布的40000条视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mysql_info = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'port': 3306, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'user': 'wx2016_longvideo', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'password': 'wx2016_longvideoP@assword1234', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'db': 'longvideo' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sql = "SELECT id FROM wx_video ORDER BY id DESC LIMIT 40000;" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mysql_helper = MysqlHelper(mysql_info=mysql_info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = mysql_helper.get_data(sql=sql) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    video_ids = [video[0] for video in data] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 视频状态过滤 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filtered_videos = filter_video_status(video_ids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info('filtered_videos nums={}'.format(len(filtered_videos))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 随机生成 0-100 数作为分数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis_data = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    json_data = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for video_id in filtered_videos: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        score = random.uniform(0, 100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        redis_data[video_id] = score 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        json_data.append({'videoId': video_id, 'rovScore': score}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 上传Redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis_helper = RedisHelper() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    redis_helper.add_data_with_zset(key_name=key_name, data=redis_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_.info('test data to redis finished!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 通知后端更新数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    result = request_post(request_url=config_.NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL, request_data={'videos': json_data}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if result['code'] == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.info('notify backend success!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log_.error('notify backend fail!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_.info('rov model train start...') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     train_start = time.time() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -185,4 +223,3 @@ if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     predict() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     predict_end = time.time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_.info('rov model predict end, execute time = {}ms'.format((predict_end - predict_start)*1000)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 |