|
@@ -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))
|
|
|
-
|