瀏覽代碼

update & add func: update_ad_roi_predict_params

liqian 1 年之前
父節點
當前提交
03a8499f96
共有 2 個文件被更改,包括 24 次插入5 次删除
  1. 19 5
      app.py
  2. 5 0
      config.py

+ 19 - 5
app.py

@@ -32,6 +32,8 @@ level_weight = {'1': 1, '2': 1, '3': 1, '4': 1, '5': 1, '6': 1}
 flow_pool_abtest_config = {'control_group': [7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
                            'experimental_flow_set_level': [],
                            'experimental_flow_set_level_score': []}
+ad_arpu = 0
+ad_roi_param = 0
 
 
 def update_flow_pool_config():
@@ -53,18 +55,30 @@ def update_flow_pool_config():
         flow_pool_abtest_config = json.loads(flow_pool_abtest_config)
 
 
-def update_ad_predict_params():
+def update_ad_roi_predict_params():
     """
     定时更新广告预测相关预设配置到内存变量中
-    1. level_weight: 流量池层级权重
-    2. flow_pool_abtest_config: 流量池ab实验配置
+    1. arpu: 上一周期arpu值
+    2. roi_param: 计算roi使用参数
     :return: None
     """
+    redis_helper = RedisHelper()
+    global ad_arpu
+    ad_arpu_initial = redis_helper.get_data_from_redis(key_name=config_.KEY_NAME_AD_ARPU)
+    if ad_arpu_initial is not None:
+        ad_arpu = float(ad_arpu_initial)
+
+    global ad_roi_param
+    ad_roi_param_initial = redis_helper.get_data_from_redis(key_name=config_.KEY_NAME_AD_ROI_PARAM)
+    if ad_roi_param_initial is not None:
+        ad_roi_param = float(ad_roi_param_initial)
 
 
 sched = BackgroundScheduler(daemon=True, timezone='Asia/Shanghai')  # 指定时区
 sched.add_job(func=update_flow_pool_config, trigger="interval", seconds=10*60)  # 间隔10min后启动
+sched.add_job(func=update_ad_roi_predict_params, trigger="interval", seconds=10*60)  # 间隔10min后启动
 update_flow_pool_config()
+update_ad_roi_predict_params()
 sched.start()
 
 app = Flask(__name__)
@@ -460,8 +474,8 @@ def ad_roi_predict():
                                                        mid=mid,
                                                        video_id=video_id,
                                                        ads=ads,
-                                                       arpu=arpu,
-                                                       roi_param=roi_param)
+                                                       arpu=ad_arpu,
+                                                       roi_param=ad_roi_param)
         if predict_result is None:
             result = {'code': -1, 'message': 'fail'}
         else:

+ 5 - 0
config.py

@@ -1757,7 +1757,12 @@ class BaseConfig(object):
     KEY_NAME_PREFIX_GROUP_WITH_AD = 'users:group:predict:share:rate:with:ad:'
     # 用户组无广告时的分享率预测结果存放 redis key 前缀,完整格式:users:group:predict:share:rate:no:ad:{user_data_key}:{user_rule_key}:{date}
     KEY_NAME_PREFIX_GROUP_NO_AD = 'users:group:predict:share:rate:no:ad:'
+    # 上一周期arpu值
+    KEY_NAME_AD_ARPU = 'ad:arpu'
+    # 计算roi使用参数
+    KEY_NAME_AD_ROI_PARAM = 'ad:roi:param'
 
+    # 各端对应数据参数
     PARAMS_NEW_STRATEGY = {
         APP_TYPE['VLOG']: {
             'video': {'data': 'videos0'},