瀏覽代碼

sync redis

丁云鹏 3 月之前
父節點
當前提交
ac311be4f4
共有 1 個文件被更改,包括 21 次插入13 次删除
  1. 21 13
      flowpool_data_update_with_level_score_v2.py

+ 21 - 13
flowpool_data_update_with_level_score_v2.py

@@ -58,9 +58,9 @@ def update_remain_view_count(video_info_list):
     """
     redis_helper = RedisHelper()
     if not video_info_list:
-        return []
+        return dict()
 
-    remain_videos = []
+    remain_videos = dict()
     # 每次请求10个
     for i in range(len(video_info_list)//10 + 1):
         remain_st_time = time.time()
@@ -79,7 +79,7 @@ def update_remain_view_count(video_info_list):
                 continue
             distribute_count = int(item['distributeCount'])
             if distribute_count > 0:
-                remain_videos.append(item['videoId'])
+                remain_videos[item['videoId']]=distribute_count
                 # 将分发数更新到本地记录
                 key_name = f"{config_.LOCAL_DISTRIBUTE_COUNT_PREFIX}{item['videoId']}:{item['flowPool']}"
                 redis_helper.set_data_to_redis(key_name=key_name, value=distribute_count, expire_time=25 * 60)
@@ -173,6 +173,7 @@ def update_flow_pool(flow_pool_id_list):
         for video_id in remain_videos:
             for item in mapping.get(video_id):
                 flow_pool = item['flowPool']
+				level = item['level']
                 try:
                     score = float(item['score'])
                 except:
@@ -182,8 +183,11 @@ def update_flow_pool(flow_pool_id_list):
                 if flow_pool_id == config_.QUICK_FLOW_POOL_ID:
                     quick_flow_pool_redis_data[value] = score
                 else:                    
-                    flow_pool_redis_data[value] = score
-
+                    if level not in flow_pool_redis_data:
+					    flow_pool_redis_data[level]=dict()
+						level_weight[level] = 0
+					flow_pool_redis_data[level][value] = score
+					level_weight[level]=level_weight[level]+distribute_count
         # 2. quick曝光池
         redis_helper = RedisHelper()
         quick_flow_pool_key_name = f"{config_.QUICK_FLOWPOOL_KEY_NAME_PREFIX}{app_type}:{config_.QUICK_FLOW_POOL_ID}"
@@ -203,14 +207,18 @@ def update_flow_pool(flow_pool_id_list):
                                                expire_time=15 * 60)
 
         # 3. 普通流量池
-        log_.info(f"videos_count: {len(flow_pool_redis_data)}")
-        flow_pool_key_name = f"{config_.FLOWPOOL_KEY_NAME_PREFIX_SET_LEVEL_SCORE}{app_type}"
-        # 如果key已存在,删除key
-        if redis_helper.key_exists(flow_pool_key_name):
-            redis_helper.del_keys(flow_pool_key_name)
-        # 写入redis
-        if flow_pool_redis_data:
-            redis_helper.add_data_with_zset(key_name=flow_pool_key_name, data=flow_pool_redis_data, expire_time=24 * 3600)
+        for level, videos in flow_pool_redis_data.items():
+            log_.info(f"level: {level}, videos_count: {len(videos)}")
+            flow_pool_key_name = f"flow:pool:level:item:score:v2:{app_type}{level}"
+            # 如果key已存在,删除key
+            if redis_helper.key_exists(flow_pool_key_name):
+                redis_helper.del_keys(flow_pool_key_name)
+            # 写入redis
+            if videos:
+                redis_helper.add_data_with_zset(key_name=flow_pool_key_name, data=videos, expire_time=24 * 3600)
+        weight=json.dumps(level_weight)
+        redis_helper.set_data_to_redis(key_name="flow:pool:level:score:weight:v2", value=json.dumps(weight), expire_time=24*3600)
+        log_.info(f'权重 {weight}')
 
 
         log_.info('data to redis finished!')