Pārlūkot izejas kodu

add ad abtest: 173-d, update ad_video_data_update

liqian 2 gadi atpakaļ
vecāks
revīzija
dbed8963ab
2 mainītis faili ar 48 papildinājumiem un 30 dzēšanām
  1. 30 24
      ad_video_data_update.py
  2. 18 6
      config.py

+ 30 - 24
ad_video_data_update.py

@@ -57,33 +57,38 @@ def update_videos_data(project, table, dt, update_params):
         log_.info(f"data_key = {data_key} update end!")
 
 
-def timer_check():
+def timer_check(dt, video_key, video_params):
+    log_.info(f"video_key = {video_key}")
+    project = config_.ad_model_data[video_key].get('project')
+    table = config_.ad_model_data[video_key].get('table')
+    # 查看当前更新的数据是否已准备好
+    data_count = data_check(project=project, table=table, dt=dt)
+    if data_count > 0:
+        log_.info(f"ad video data count = {data_count}")
+        # 数据准备好,进行更新
+        update_videos_data(project=project, table=table, dt=dt, update_params=video_params)
+        log_.info(f"ad video data update end!")
+        send_msg_to_feishu(
+            webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
+            key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
+            msg_text=f"rov-offline{config_.ENV_TEXT} - 视频数据更新完成\n"
+                     f"video_key: {video_key}\n"
+                     f"now_date: {dt}\n"
+                     f"finished time: {datetime.datetime.strftime(datetime.datetime.now(), '%Y%m%d %H:%M:%S')}"
+        )
+    else:
+        # 数据没准备好,1分钟后重新检查
+        Timer(60, timer_check, args=[dt, video_key, video_params]).start()
+
+
+def main():
     try:
-        update_params = config_.AD_VIDEO_DATA_PARAMS
-        project = config_.ad_model_data['videos_share_rate'].get('project')
-        table = config_.ad_model_data['videos_share_rate'].get('table')
         now_date = datetime.datetime.today()
         dt = datetime.datetime.strftime(now_date, '%Y%m%d')
         log_.info(f"now_date: {dt}")
-        now_min = datetime.datetime.now().minute
-        # 查看当前更新的数据是否已准备好
-        data_count = data_check(project=project, table=table, dt=dt)
-        if data_count > 0:
-            log_.info(f"ad video data count = {data_count}")
-            # 数据准备好,进行更新
-            update_videos_data(project=project, table=table, dt=dt, update_params=update_params)
-            log_.info(f"ad video data update end!")
-        # elif now_min > 45:
-        #     log_.info('ad video data is None!')
-        #     send_msg_to_feishu(
-        #         webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
-        #         key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
-        #         msg_text=f"rov-offline{config_.ENV_TEXT} - 视频分享率数据未准备好!\n"
-        #                  f"traceback: {traceback.format_exc()}"
-        #     )
-        else:
-            # 数据没准备好,1分钟后重新检查
-            Timer(60, timer_check).start()
+        update_params = config_.AD_VIDEO_DATA_PARAMS
+        for video_key, video_params in update_params.items():
+            timer_check(dt, video_key, video_params)
 
     except Exception as e:
         log_.error(f"视频分享率预测数据更新失败, exception: {e}, traceback: {traceback.format_exc()}")
@@ -97,4 +102,5 @@ def timer_check():
 
 
 if __name__ == '__main__':
-    timer_check()
+    # timer_check()
+    main()

+ 18 - 6
config.py

@@ -631,6 +631,10 @@ class BaseConfig(object):
             'project': 'loghubods',
             'table': 'video_sharerate_admodel'
         },
+        'videos_share_rate_7days': {
+            'project': 'loghubods',
+            'table': 'video_sharerate_admodel_7days'
+        },
     }
 
     # 调用广告模型appType列表
@@ -646,12 +650,17 @@ class BaseConfig(object):
 
     # 广告模型视频数据
     AD_VIDEO_DATA_PARAMS = {
-        'data1': APP_TYPE['VLOG'],  # vlog
-        'data2': APP_TYPE['LOVE_LIVE'],  # 票圈视频
-        'data3': APP_TYPE['LONG_VIDEO'],  # 内容精选
-        'data4': APP_TYPE['SHORT_VIDEO'],  # 票圈短视频
-        'data5': APP_TYPE['LAO_HAO_KAN_VIDEO'],  # 老好看视频
-        'data6': APP_TYPE['ZUI_JING_QI'],  # 票圈最惊奇
+        'videos_share_rate': {
+            'data1': APP_TYPE['VLOG'],  # vlog
+            'data2': APP_TYPE['LOVE_LIVE'],  # 票圈视频
+            'data3': APP_TYPE['LONG_VIDEO'],  # 内容精选
+            'data4': APP_TYPE['SHORT_VIDEO'],  # 票圈短视频
+            'data5': APP_TYPE['LAO_HAO_KAN_VIDEO'],  # 老好看视频
+            'data6': APP_TYPE['ZUI_JING_QI'],  # 票圈最惊奇
+        },
+        'videos_share_rate_7days': {
+            'data1:7days': APP_TYPE['VLOG'],  # vlog
+        }
     }
 
     # 广告模型用户分组类别
@@ -731,6 +740,9 @@ class BaseConfig(object):
         '173-c': {'video': {'data': 'data1'},
                   'user': {'data': 'data1', 'rule': 'rule3'},
                   'threshold': {'group': 11 / 24, 'mean_group': 11 / 24}},
+        '173-d': {'video': {'data': 'data1:7days'},
+                  'user': {'data': 'data1', 'rule': 'rule1'},
+                  'threshold': {'group': 11 / 24, 'mean_group': 11 / 24}},
         # 票圈视频+
         '190-a': {'video': {'data': 'data1'},
                   'user': {'data': 'data1', 'rule': 'rule1'},