liqian преди 3 години
родител
ревизия
2081babedb
променени са 3 файла, в които са добавени 60 реда и са изтрити 4 реда
  1. 41 2
      config.py
  2. 1 1
      rov_train.py
  3. 18 1
      utils.py

+ 41 - 2
config.py

@@ -29,12 +29,41 @@ class BaseConfig(object):
     # 模型存放文件
     MODEL_FILENAME = 'model.pickle'
 
-    # 小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{date}
+    # 小程序离线ROV模型结果存放 redis key前缀,完整格式:com.weiqu.video.recall.hot.item.score.{appType}.{date}
     RECALL_KEY_NAME_PREFIX = 'com.weiqu.video.recall.hot.item.score.'
     # 流量池离线模型结果存放 redis key
     FLOWPOOL_KEY_NAME = 'com.weiqu.video.flowpool.hot.item.score'
 
 
+class DevelopmentConfig(BaseConfig):
+    """开发环境配置"""
+    # 测试环境redis地址
+    REDIS_INFO = {
+        'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
+        'port': 6379,
+        'password': 'Wqsd@2019',
+    }
+
+    # Hologres连接参数,本地使用
+    HOLOGRES_INFO = {
+        'host': 'hgprecn-cn-7pp28y18c00c-cn-hangzhou.hologres.aliyuncs.com',
+        'port': 80,
+        'dbname': 'dssm',
+        'user': 'LTAI5tMPqPy9yboQAf1mBCCN',
+        'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
+    }
+
+    # Hologres视频状态存储表名
+    VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
+
+    # 从流量池获取视频接口地址
+    GET_VIDEOS_FROM_POOL_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
+    # 获取视频在流量池中的剩余可分发数接口地址
+    GET_REMAIN_VIEW_COUNT_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/remainViewCount'
+    # 计算完ROV通知后端接口地址
+    NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL = 'http://speedtest.wx.com/longvideoapi/openapi/recommend/updateRovScore'
+
+
 class TestConfig(BaseConfig):
     """测试环境配置"""
     # 测试环境redis地址
@@ -53,6 +82,9 @@ class TestConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # Hologres视频状态存储表名
+    VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
+
     # 从流量池获取视频接口地址
     GET_VIDEOS_FROM_POOL_URL = 'http://testapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
     # 获取视频在流量池中的剩余可分发数接口地址
@@ -79,6 +111,9 @@ class PreProductionConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # Hologres视频状态存储表名
+    VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
+
     # 从流量池获取视频接口地址
     GET_VIDEOS_FROM_POOL_URL = 'http://preapi-internal.piaoquantv.com/flowpool/video/getAllVideo'
     # 获取视频在流量池中的剩余可分发数接口地址
@@ -105,6 +140,9 @@ class ProductionConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # Hologres视频状态存储表名
+    VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
+
     # 从流量池获取视频接口地址
     GET_VIDEOS_FROM_POOL_URL = 'http://api-internal.piaoquantv.com/flowpool/video/getAllVideo'
     # 获取视频在流量池中的剩余可分发数接口地址
@@ -114,6 +152,7 @@ class ProductionConfig(BaseConfig):
 
 
 def set_config():
-    return TestConfig()
+    return DevelopmentConfig()
+    # return TestConfig()
     # return PreProductionConfig()
     # return ProductionConfig()

+ 1 - 1
rov_train.py

@@ -158,7 +158,7 @@ def predict():
     for i in range(len(video_ids)):
         redis_data[video_ids[i]] = normal_y_[i]
         json_data.append({'videoId': video_ids[i], 'rovScore': normal_y_[i]})
-    key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d')
+    key_name = config_.RECALL_KEY_NAME_PREFIX + '{}.{}'.format(config_.APP_TYPE['VLOG'], time.strftime('%Y%m%d'))
     redis_helper = RedisHelper()
     redis_helper.add_data_with_zset(key_name=key_name, data=redis_data)
     log_.info('data to redis finished!')

+ 18 - 1
utils.py

@@ -5,6 +5,7 @@ import json
 
 from odps import ODPS
 from config import set_config
+from db_helper import HologresHelper
 
 config_ = set_config()
 
@@ -92,7 +93,23 @@ def data_normalization(data):
 
 
 def filter_video_status(video_ids):
-    filtered_videos = video_ids
+    """
+    对视频状态进行过滤
+    :param video_ids: 视频id列表 type-list
+    :return: filtered_videos
+        """
+    sql = "SELECT video_id " \
+          "FROM {} " \
+          "WHERE audit_status = 5 " \
+          "AND applet_rec_status IN (1, 6) " \
+          "AND open_status = 1 " \
+          "AND payment_status = 0 " \
+          "AND encryption_status IS NULL " \
+          "AND transcoding_status = 3 " \
+          "AND video_id IN {};".format(config_.VIDEO_STATUS, tuple(video_ids))
+    hologres_helper = HologresHelper()
+    data = hologres_helper.get_data(sql=sql)
+    filtered_videos = [temp[0] for temp in data]
     return filtered_videos