liqian 3 years ago
parent
commit
41ecf1696c
4 changed files with 14 additions and 7 deletions
  1. 1 1
      config.py
  2. 4 3
      recommend.py
  3. 7 1
      video_rank.py
  4. 2 2
      video_recall.py

+ 1 - 1
config.py

@@ -10,7 +10,7 @@ class BaseConfig(object):
     K = 3
     # 从流量池获取视频的概率设置
     P = 0.5
-    # 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
     FLOW_POOL_KEY_NAME = 'com.weiqu.video.flowpool.hot.item.score'

+ 4 - 3
recommend.py

@@ -31,9 +31,9 @@ def video_recommend(mid, uid, size, app_type, algo_type):
     _, last_rov_recall_key, _ = pool_recall.get_video_last_idx()
     pool_list = [
         # rov召回池
-        pool.apply_async(pool_recall.rov_pool_recall, size),
+        pool.apply_async(pool_recall.rov_pool_recall, (size,)),
         # 流量池
-        pool.apply_async(pool_recall.flow_pool_recall, size)
+        pool.apply_async(pool_recall.flow_pool_recall, (size,))
     ]
     recall_result_list = [p.get() for p in pool_list]
     pool.close()
@@ -69,7 +69,8 @@ def video_recommend(mid, uid, size, app_type, algo_type):
     redis_helper = RedisHelper()
     preview_key_name = config_.PREVIEW_KEY_PREFIX + '{}.{}'.format(app_type, mid)
     preview_video_ids = [item['videoId'] for item in rank_result]
-    redis_helper.set_data_to_redis(key_name=preview_key_name, value=preview_video_ids, expire_time=0.5*3600)
+    if preview_video_ids:
+        redis_helper.add_data_with_set(key_name=preview_key_name, values=set(preview_video_ids), expire_time=0.5*3600)
     # 将此次获取的ROV召回池末位视频id同步刷新到Redis中,方便下次快速定位到召回位置,过期时间为1天
     rov_recall_video = [item['videoId'] for item in rank_result if item['pushFrom'] == 'recall_pool']
     if rov_recall_video:

+ 7 - 1
video_rank.py

@@ -96,9 +96,15 @@ def bottom_strategy(size, app_type, ab_code, mid='', uid=''):
     :return:
     """
     pool_recall = PoolRecall(app_type=app_type, mid=mid, uid=uid, ab_code=ab_code)
-    key_name = pool_recall.get_pool_redis_key(pool_type='rov')
+    print(1)
+    key_name, _ = pool_recall.get_pool_redis_key(pool_type='rov')
+    if not key_name:
+        log_.info('bottom strategy no data!')
+        return []
     redis_helper = RedisHelper()
+    print(2)
     data = redis_helper.get_data_zset_with_index(key_name=key_name, start=0, end=1000)
+    print(data)
     if not data:
         log_.info('bottom strategy no data!')
         return []

+ 2 - 2
video_recall.py

@@ -169,12 +169,12 @@ class PoolRecall(object):
         """
         if pool_type == 'rov':
             # 判断热度列表是否更新,未更新则使用前一天的热度列表
-            key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d')
+            key_name = config_.RECALL_KEY_NAME_PREFIX + '{}.{}'.format(self.app_type, time.strftime('%Y%m%d'))
             if self.redis_helper.key_exists(key_name):
                 redis_date = date.today().strftime('%Y%m%d')
             else:
                 redis_date = (date.today() - timedelta(days=1)).strftime('%Y%m%d')
-                key_name = config_.RECALL_KEY_NAME_PREFIX + redis_date
+                key_name = config_.RECALL_KEY_NAME_PREFIX + '{}.{}'.format(self.app_type, redis_date)
                 if not self.redis_helper.key_exists(key_name):
                     return None, None
             return key_name, redis_date