瀏覽代碼

Merge branch 'test' into pre-master

liqian 3 年之前
父節點
當前提交
efc4c23411
共有 5 個文件被更改,包括 44 次插入8 次删除
  1. 12 4
      config.py
  2. 1 0
      env.conf
  3. 17 0
      recommend.py
  4. 2 2
      video_rank.py
  5. 12 2
      video_recall.py

+ 12 - 4
config.py

@@ -12,7 +12,7 @@ class BaseConfig(object):
     # abTest
     AB_TEST = {
         'w_h_rate': [APP_TYPE['LONG_VIDEO']],  # 视频宽高比实验(每组的前两个视频调整为横屏视频)
-        'position_insert': [APP_TYPE['SHORT_VIDEO']]
+        'position_insert': [APP_TYPE['SHORT_VIDEO'],APP_TYPE['LOVE_LIVE']]
     }
     # abCode
     AB_CODE = {
@@ -92,7 +92,9 @@ class BaseConfig(object):
 
 
 class DevelopmentConfig(BaseConfig):
-    """测试环境配置"""
+    """开发环境配置"""
+    # 报警内容 环境区分
+    ENV_TEXT = "开发环境"
     # 测试环境redis地址
     REDIS_INFO = {
         'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
@@ -132,6 +134,8 @@ class DevelopmentConfig(BaseConfig):
 
 class TestConfig(BaseConfig):
     """测试环境配置"""
+    # 报警内容 环境区分
+    ENV_TEXT = "测试环境"
     # 测试环境redis地址
     REDIS_INFO = {
         'host': 'r-bp1ps6my7lzg8rdhwx682.redis.rds.aliyuncs.com',
@@ -171,6 +175,8 @@ class TestConfig(BaseConfig):
 
 class PreProductionConfig(BaseConfig):
     """预发布环境配置"""
+    # 报警内容 环境区分
+    ENV_TEXT = "预发布环境"
     # 线上环境redis地址
     REDIS_INFO = {
         'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
@@ -210,6 +216,8 @@ class PreProductionConfig(BaseConfig):
 
 class ProductionConfig(BaseConfig):
     """生产环境配置"""
+    # 报警内容 环境区分
+    ENV_TEXT = "生产环境"
     # 线上环境redis地址
     REDIS_INFO = {
         'host': 'r-bp1fogs2mflr1ybfot.redis.rds.aliyuncs.com',
@@ -249,6 +257,6 @@ class ProductionConfig(BaseConfig):
 
 def set_config():
     # return DevelopmentConfig()
-    # return TestConfig()
-    return PreProductionConfig()
+    return TestConfig()
+    # return PreProductionConfig()
     # return ProductionConfig()

+ 1 - 0
env.conf

@@ -0,0 +1 @@
+ENV=test

+ 17 - 0
recommend.py

@@ -44,6 +44,8 @@ def video_position_recommend(mid, uid, app_type, videos):
     pos1_vids = filted_list[0]
     pos2_vids = filted_list[1]
 
+    videos = positon_duplicate(pos1_vids, pos2_vids, videos)    
+
     if pos1_vids is not None and len(pos1_vids) >0 :
         videos.insert(0, {'videoId': int(pos1_vids[0]), 'rovScore': 100,
                           'pushFrom': config_.PUSH_FROM['position_insert'], 'abCode': config_.AB_CODE['position_insert']})
@@ -54,6 +56,21 @@ def video_position_recommend(mid, uid, app_type, videos):
     return videos[:10]
 
 
+def positon_duplicate(pos1_vids, pos2_vids, videos):
+    s = set()
+    if pos1_vids is not None and len(pos1_vids) >0:
+        s.add(int(pos1_vids[0]))
+    if pos2_vids is not None and len(pos2_vids) >0:
+        s.add(int(pos2_vids[0]))
+
+    l = []
+    for i in range(len(videos)):
+        if videos[i]['videoId'] in s:
+            l.append(i)
+    for i in l:
+        videos.pop(i)
+    return videos
+
 def video_recommend(mid, uid, size, app_type, algo_type, client_info):
     """
     首页线上推荐逻辑

+ 2 - 2
video_rank.py

@@ -106,8 +106,8 @@ def bottom_strategy(size, app_type, ab_code):
     redis_helper = RedisHelper()
     data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=1000)
     if not data:
-        log_.info('预发布环境 —— ROV推荐进入了二次兜底, data = {}'.format(data))
-        send_msg_to_feishu('预发布环境 —— ROV推荐进入了二次兜底,请查看是否有数据更新失败问题。')
+        log_.info('{} —— ROV推荐进入了二次兜底, data = {}'.format(config_.ENV_TEXT, data))
+        send_msg_to_feishu('{} —— ROV推荐进入了二次兜底,请查看是否有数据更新失败问题。'.format(config_.ENV_TEXT))
         # 二次兜底
         bottom_data = bottom_strategy_last(size=size, app_type=app_type, ab_code=ab_code)
         return bottom_data

+ 12 - 2
video_recall.py

@@ -280,7 +280,17 @@ class PoolRecall(object):
                 if self.redis_helper.key_exists(key_name):
                     return key_name, redis_date
                 else:
-                    key_name = '{}{}.{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, self.app_type, redis_date - 1)
+                    if redis_date == 0:
+                        key_name = '{}{}.{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, self.app_type, 23)
+                    else:
+                        key_name = '{}{}.{}'.format(config_.RECALL_KEY_NAME_PREFIX_APP_TYPE, self.app_type,
+                                                    redis_date - 1)
+                    # 判断当前时间是否晚于数据正常更新时间,发送消息到飞书
+                    now_m = datetime.now().minute
+                    feishu_text = '{} —— appType = {}, h = {} 数据未按时更新,请及时查看解决。'.format(
+                        config_.ENV_TEXT, self.app_type, redis_date)
+                    if now_m > 2:
+                        send_msg_to_feishu(feishu_text)
                     return key_name, redis_date - 1
                 # 其他
             else:
@@ -297,7 +307,7 @@ class PoolRecall(object):
                     # 判断当前时间是否晚于rov召回池更新时间 + 1h,发送消息到飞书
                     now_h = datetime.now().hour
                     now_m = datetime.now().minute
-                    feishu_text = '预发布环境 —— 今日ROV召回池数据未按时更新,请及时查看解决。'
+                    feishu_text = '{} —— 今日ROV召回池数据未按时更新,请及时查看解决。'.format(config_.ENV_TEXT)
                     if now_h == config_.ROV_UPDATE_H + 1 and now_m > config_.ROV_UPDATE_MINUTE:
                         send_msg_to_feishu(feishu_text)
                     elif now_h > config_.ROV_UPDATE_H + 2: