Bläddra i källkod

区域屏蔽需求 增加开关

zhangbo 1 år sedan
förälder
incheckning
c6bf27fcad
4 ändrade filer med 68 tillägg och 4 borttagningar
  1. 1 1
      config.py
  2. 43 0
      parameter_dir/parameter_update.py
  3. 14 1
      utils.py
  4. 10 2
      video_recall.py

+ 1 - 1
config.py

@@ -2207,7 +2207,7 @@ class ProductionConfig(BaseConfig):
 def set_config():
     # 获取环境变量 ROV_SERVER_ENV
     env = os.environ.get('ROV_SERVER_ENV')
-    # env = 'dev'
+    env = 'dev'
     if env is None:
         # log_.error('ENV ERROR: is None!')
         return

+ 43 - 0
parameter_dir/parameter_update.py

@@ -11,6 +11,8 @@ config_ = set_config()
 
 RISK_SHIELD_FILTER_RULE_V1_JSON = "RISK_SHIELD_FILTER_RULE_V1_JSON"
 RISK_SHIELD_FILTER_VIDEO_V1_STR = "RISK_SHIELD_FILTER_VIDEO_V1_STR"
+RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT = "RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT"
+RISK_SHIELD_FILTER_FLAG_BOOL = "RISK_SHIELD_FILTER_FLAG_BOOL"
 
 def param_update_risk_rule() -> dict:
     """
@@ -37,11 +39,52 @@ def param_update_risk_videos() -> list:
         return data
     return []
 
+def param_update_expansion_factor() -> int:
+    """
+    定时更新扩大倍数
+    key = "RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT"
+    value = "5"
+    """
+    redis_helper = RedisHelper()
+    tmp = redis_helper.get_data_from_redis(key_name=RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT)
+    data = 5
+    if tmp is not None:
+        try:
+            data = int(tmp)
+        except Exception as e:
+            data = 5
+    # 容灾
+    if data < 5:
+        data = 5
+    elif data > 15:
+        data = 5
+    return data
+
+def param_update_risk_filter_flag() -> bool:
+    """
+    定时更新 是否过滤
+    key = "RISK_SHIELD_FILTER_FLAG_BOOL"
+    value = "False"
+    """
+    redis_helper = RedisHelper()
+    tmp = redis_helper.get_data_from_redis(key_name=RISK_SHIELD_FILTER_FLAG_BOOL)
+    data = False
+    if tmp is not None:
+        try:
+            data = bool(tmp)
+        except Exception as e:
+            data = False
+    return data
+
 if __name__ == '__main__':
     pass
     d1 = param_update_risk_rule()
     d2 = param_update_risk_videos()
     print(d1, type(d1))
     print(d2, type(d2))
+    d3 = param_update_expansion_factor()
+    d4 = param_update_risk_filter_flag()
+    print(d3, type(d3))
+    print(d4, type(d4))
 
 

+ 14 - 1
utils.py

@@ -14,9 +14,9 @@ from log import Log
 
 import sys
 sys.path.append("parameter_dir/")
-print()
 from parameter_update import param_update_risk_rule
 from parameter_update import param_update_risk_videos
+from parameter_update import param_update_risk_filter_flag
 
 config_ = set_config()
 log_ = Log()
@@ -848,6 +848,10 @@ class FilterVideos(object):
         return filtered_videos
 
     def filter_videos_with_risk_video(self, video_ids, app_type, region_code):
+        # 0 用一个开关控制,是否过滤生效。 便于回滚功能。
+        flag = param_update_risk_filter_flag()
+        if not flag:
+            return video_ids[0: min(20, len(video_ids))]
         # 1 判断是否过滤,不展示的app+区域列表,-1必须过滤
         app_region_filtered = param_update_risk_rule()
         if app_type in app_region_filtered.keys():
@@ -864,6 +868,15 @@ class FilterVideos(object):
         videos_with_risk = param_update_risk_videos()
         # 3 过滤 返回结果
         video_ids_new = [i for i in video_ids if i not in videos_with_risk]
+        # print(flag)
+        # print(app_region_filtered)
+        # print(video_ids)
+        # print(app_type)
+        # print(region_code)
+        # print(videos_with_risk)
+        # print(video_ids_new)
+        # print(len(video_ids))
+        # print(len(video_ids_new))
         return video_ids_new[0: min(20, len(video_ids_new))]
 
 if __name__ == '__main__':

+ 10 - 2
video_recall.py

@@ -8,7 +8,10 @@ from db_helper import RedisHelper
 from config import set_config
 from utils import FilterVideos, get_videos_remain_view_count, get_videos_local_distribute_count, send_msg_to_feishu
 import gevent
-import  json
+import json
+import sys
+sys.path.append("parameter_dir/")
+from parameter_update import param_update_expansion_factor
 
 log_ = Log()
 config_ = set_config()
@@ -46,6 +49,10 @@ class PoolRecall(object):
         self.h_data_key = data_key
         self.h_rule_key = h_rule_key
 
+        self.expansion_factor = param_update_expansion_factor()
+
+
+
     def copy_redis_zset_data(self, from_key_name, to_key_name):
         # 获取from_key_name中的数据
         records = self.redis_helper.get_data_zset_with_index(key_name=from_key_name, start=0, end=-1, with_scores=True)
@@ -2805,7 +2812,8 @@ class PoolRecall(object):
         pool_recall_result = []
         # 每次获取的视频数
         # get_size = size * 5
-        get_size = size * 10
+        get_size = size * self.expansion_factor
+
         # 记录获取频次
         freq = 0
         while len(pool_recall_result) < size: