Sfoglia il codice sorgente

一次性补满创意改为按小时补充创意

mrstotoro 4 anni fa
parent
commit
d0644df8f0
1 ha cambiato i file con 79 aggiunte e 267 eliminazioni
  1. 79 267
      ai_time_task_creative_handler.py

+ 79 - 267
ai_time_task_creative_handler.py

@@ -460,34 +460,30 @@ class AiHighQualityMaterial(tornado.web.RequestHandler):
             self.flush()
 
 
-class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
+class AiUpCreativeByHour(tornado.web.RequestHandler):
     """
-    每天22:00 调用该任务,检查当天创意是否创建达到上限,否则使用历史高质量素材填满
+    1点到20点,每小时执行一次,检查当前时点创意个数是否达到hour*100
+    没有达到则按照当前时点值,补充不同类型的视频
     """
 
     def post(self):
         data = self.request.body
         data = str(data, 'utf8')
         data = json.loads(data, encoding='utf8')
-        logger.info("***************************************  NEW REQUEST ***************************************")
         account_id = data.get('account_id')
         campaign_id = data.get('campaign_id')
 
         logger.info("账户信息=%s, 当前进程=%s, 当前进程的主进程=%s,  raw data from request is %s" %
                     (account_id, os.getpid(), os.getppid(), data))
-
-
-
-
         try:
-            # 1-1 从客户策略表中获取该账户下 每个素材搭配的封面个数, 来计算需要补充的素材个数
+            # 1 从客户策略表中获取该账户下 每个素材搭配的封面个数, 来计算需要补充的素材个数
             sql = """select image_cnt from ctop_ai_kuaishou_advertiser_strategy 
                         where account_id = %s
                         limit 1""" % account_id
             df = pd.read_sql(sql, engine)
             image_cnt = int(df['image_cnt'].values[0])
 
-            # 1-2、获取从0点到now()为止,该账户下已有的创意个数 M
+            # 2、获取从0点到now()为止,该账户下已有的创意个数 M
             sql = """select count(1) creative_cnt from ctop_kuaishou_creative 
                      where account_id = %s
                      and creative_id is not NULL
@@ -501,235 +497,53 @@ class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
             now_hour = datetime.datetime.now().hour
             now = datetime.datetime.now()
             should_creative_cnt = now_hour * 100
+            # 3、计算需要补充的创意个数和视频个数,并按当前小时值,补充不同类似的视频
             if exist_creative_cnt < should_creative_cnt:
                 need_video_cnt = (should_creative_cnt - exist_creative_cnt) // image_cnt
                 logger.info("account_id = %s, 按小时需要补充的视频数量 = %s" % (account_id, need_video_cnt))
                 if now_hour % 5 == 0:
+                    # campaign_group_name_place 用于广告计划和广告组名称的标识
+                    campaign_group_name_place = "高质量素材"
                     video_list = get_top_video_info(account_id=account_id,
                                                     url=get_high_quality_video_url,
-                                                    start_time=(now + datetime.timedelta(days=-2 * high_quality_video_days)).
+                                                    start_time=(now + datetime.timedelta(days=-high_quality_video_days)).
                                                     strftime("%Y-%m-%d %H:%M:%S"),
-                                                    end_time=(now + datetime.timedelta(days=-high_quality_video_days)).
+                                                    end_time=(now + datetime.timedelta(days=-1)).
                                                     strftime("%Y-%m-%d %H:%M:%S"),
                                                     cnt=need_video_cnt,
                                                     app_version=None)
-                else:
+                elif (now_hour % 5 == 1) or (now_hour % 5 == 2):
+                    campaign_group_name_place = "历史素材打捞"
                     video_list = get_history_video_info(account_id=account_id,
                                                         url=get_history_video_url,
                                                         start_time=history_video_start_time,
                                                         end_time=history_video_end_time,
                                                         video_cnt=need_video_cnt,
                                                         related_creative_max_cnt=related_creative_max_cnt)
-                # 根据获取到的视频进行创建
-                sql = """select account_id, single_appid, app_id_array, general_track from ctop_ai_kuaishou_advertiser_strategy
-                         where account_id=%s order by create_time desc limit 1""" % account_id
-                df = pd.read_sql(sql, engine)
-                if df['general_track'].values[0] == 0:
-                    app_id_array = eval(df['app_id_array'].values[0])
-                    app_list = get_app_list(account_id=account_id, url=get_app_list_url)
-                    # app_dict key = ("appVersion": "ksjyrlyn-人类一脑涂地大败") , value = 完整的app_id信息
-                    app_dict = {}
-                    for app_info in app_list['data']:
-                        if app_info['appId'] in app_id_array:
-                            app_dict[app_info['appVersion']] = app_info
-                    # 单独处理返回的时候中,有通用视频,需要单独处理
-                    # "photo_name": "all",
-                    # "photo_name": "ksjytdrca-糖豆人冲啊",
-                    if video_list['code'] == 0:
-                        video_df = pd.DataFrame(video_list['data'])
-                        # 1-特定视频的创建
-                        special_video_df = video_df[video_df.photo_name != 'all']
-                        for photo_name in special_video_df['photo_name'].unique():
-                            if photo_name in app_dict.keys():
-                                campaign_id = None
-                                app_id = app_dict[photo_name].get('appId', 'error')
-                                app_version = app_dict[photo_name].get('appVersion', 'error')
-                                track_url = app_dict[photo_name].get('trackUrl', 'error')
-                                sql = """ select campaign_id, campaign_name from ctop_kuaishou_campaign where account_id = %s """ % account_id
-                                campaign_df = pd.read_sql(sql, engine)
-                                for row in campaign_df.itertuples():
-                                    if (app_version + '--优选广告位-' + '高质量素材') == getattr(row, 'campaign_name'):
-                                        campaign_id = getattr(row, 'campaign_id')
-                                        break
-                                app_id_video_df = special_video_df[special_video_df.photo_name == photo_name]
-                                app_id_video_list = []
-                                for k, v in app_id_video_df.T.to_dict().items():
-                                    app_id_video_list.append(v)
-                                request_data = get_request_data(account_id=account_id,
-                                                                campaign_id=campaign_id,
-                                                                video_info=app_id_video_list,
-                                                                campaign_name=app_version + '--优选广告位-' + '高质量素材',
-                                                                group_name=app_version + '-优选广告位-不限-自定义-' + '高质量素材',
-                                                                ai_strategy_remark="按小时补满创意",
-                                                                unit_type=4,
-                                                                app_id=app_id,
-                                                                click_track_url=track_url)
-                                request = ai_strategy_request_parse(request_data)
-                                logger.info("account_id=%s, app_id=%s, 用高质量素材补满创意-特定视频,ai策略的返回信息:%s" %
-                                            (account_id, app_id, request))
-
-                        # 2-通用视频的创建,random.shuffle 选择 app_id
-                        general_video_df = video_df[video_df.photo_name == 'all']
-                        if not general_video_df.empty:
-                            general_video_cnt = len(general_video_df)
-                            app_version_list = list(app_dict)
-                            random.shuffle(app_version_list)
-                            video_cnt = 0
-                            for app_version in app_version_list[:general_video_cnt]:
-                                campaign_id = None
-                                app_id = app_dict[app_version].get('appId', 'error')
-                                track_url = app_dict[app_version].get('trackUrl', 'error')
-                                sql = """ select campaign_id, campaign_name from ctop_kuaishou_campaign where account_id = %s """ % account_id
-                                campaign_df = pd.read_sql(sql, engine)
-                                for row in campaign_df.itertuples():
-                                    if (app_version + '--优选广告位-' + '高质量素材') == getattr(row, 'campaign_name'):
-                                        campaign_id = getattr(row, 'campaign_id')
-                                        break
-                                single_video = [general_video_df.iloc[video_cnt, :].T.to_dict()]
-                                request_data = get_request_data(account_id=account_id,
-                                                                campaign_id=campaign_id,
-                                                                video_info=single_video,
-                                                                campaign_name=app_version + '--优选广告位-' + '高质量素材',
-                                                                group_name=app_version + '-优选广告位-不限-自定义-' + '高质量素材',
-                                                                ai_strategy_remark="用高质量素材补满创意",
-                                                                unit_type=4,
-                                                                app_id=app_id,
-                                                                click_track_url=track_url)
-                                request = ai_strategy_request_parse(request_data)
-                                video_cnt += 1
-                                logger.info("account_id=%s, app_id=%s, 用高质量素材补满创意-通用视频,ai策略的返回信息:%s" % (account_id, app_id, request))
-                        else:
-                            logger.info("account_id=%s, 用高质量素材补满创意: 返回的视频中没有通用视频" % account_id)
-                        self.write(json.dumps({"message": "account_id=%s, 用高质量素材补满创意请求已走完!" % account_id}))
-                        self.flush()
-                    else:
-                        logger.info("account_id=%s, 按小时补满创意: 没有成功获取到视频!" % account_id)
-                        self.write(json.dumps({"message": "account_id=%s, 按小时补满创意: 没有成功获取到视频!" % account_id}))
-                        self.flush()
                 else:
-                    # 1-1 获取当天计划中包含“高质量素材”计划的,计划id
-                    sql = """
-                                                       select campaign_id, campaign_name from ctop_kuaishou_campaign 
-                                                       where account_id = %s
-                                                       and put_create_time >= '%s'
-                                                       and put_create_time <= '%s'
-                                                       """ % (account_id, start_time, end_time)
+                    campaign_group_name_place = "遗漏素材"
+                    video_list = get_missing_video_info(account_id=account_id,
+                                                        cnt=need_video_cnt,
+                                                        url=get_missing_video_url,
+                                                        start_time=missing_video_start_time,
+                                                        end_time=missing_video_end_time)
+                    
+                if video_list['code'] == 0:
+                    # 根据获取到的视频进行创建
+                    sql = """select account_id, single_appid, app_id_array, general_track from ctop_ai_kuaishou_advertiser_strategy
+                             where account_id=%s order by create_time desc limit 1""" % account_id
                     df = pd.read_sql(sql, engine)
-                    for row in df.itertuples():
-                        if '高质量素材' in getattr(row, 'campaign_name'):
-                            campaign_id = getattr(row, 'campaign_id')
-                            break
-
-                    video_info = get_top_video_info(account_id=account_id,
-                                                    cnt=video_cnt,
-                                                    start_time=(now + datetime.timedelta(days=-2 * high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    end_time=(now + datetime.timedelta(days=-high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    url=get_high_quality_video_url)
-                    if video_info['code'] != 0:
-                        logger.info("account_id = %s, 历史高质量素材填满, 没有获取到视频,不发送ai策略请求!" % account_id)
-                        self.write(json.dumps({"account_id": account_id,
-                                               "message": "历史高质量素材填满, 没有获取到视频,不发送ai策略请求!"}))
-                        self.flush()
-                    else:
-                        campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
-                        if (campaign_name is None) or (group_name is None):
-                            logger.info("account_id = %s, 没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!" % account_id)
-                            self.write(json.dumps({"account_id": account_id,
-                                                   "message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
-                            self.flush()
-                        else:
-                            request_data = get_request_data(account_id=account_id,
-                                                            campaign_id=campaign_id,
-                                                            video_info=video_info['data'],
-                                                            campaign_name=campaign_name,
-                                                            group_name=group_name,
-                                                            ai_strategy_remark="用高质量素材补满创意",
-                                                            name_replace="高质量素材")
-                            request = ai_strategy_request_parse(request_data)
-                            logger.info("account_id = %s, 用高质量素材补满创意,ai策略的返回信息:%s" % (account_id, request))
-                            self.write(json.dumps(request))
-                            self.flush()
-
-            else:
-                logger.info("account_id = %s, 创意已经建满,不需要补充素材!" % account_id)
-                self.write(json.dumps({"account_id": account_id, "message": "创意已经建满,不需要补充素材!"}))
-                self.flush()
-
-
-
-
-
-
-
-            # 2、如果创意个数M 小于 hour()*100, 则使用 (hour()*100 - M)// image_cnt 个视频
-
-            # 2、datetime.datetime.now().hour % 5, 如果不等于0, 则使用创意关联数少的视频,否则使用历史跑量视频
-
-
-            start_time = (datetime.date.today()).strftime('%Y-%m-%d %H:%M:%S')
-            end_time = (datetime.datetime.now()).strftime('%Y-%m-%d %H:%M:%S')
-            now = datetime.datetime.now()
-
-            # 1-1 从客户策略表中获取该账户下 每个素材搭配的封面个数, 来计算需要补充的素材个数
-            sql = """
-            select image_cnt from ctop_ai_kuaishou_advertiser_strategy 
-            where account_id = %s
-            limit 1
-            """ % account_id
-            df = pd.read_sql(sql, engine)
-            image_cnt = int(df['image_cnt'].values[0])
-
-            # 2-1 从 ctop_kuaishou_creative 获取当天该账户到此刻 已经创建的创意个数
-            video_cnt = 0
-            sql = """
-                   select count(1) creative_cnt from ctop_kuaishou_creative 
-                   where account_id = %s
-                   and creative_id is not NULL
-                   and creative_create_time <= '%s'
-                   and creative_create_time >= '%s'
-                   """ % (account_id, end_time, start_time)
-            df = pd.read_sql(sql, engine)
-            creative_cnt = int(df['creative_cnt'].values[0])
-            if creative_cnt >= 2000:
-                video_cnt = 0
-            else:
-                video_cnt = (2000 - creative_cnt) // image_cnt
-
-            # 3-1 获取视频信息
-            if video_cnt == 0:
-                logger.info("account_id = %s, 创意已经建满,不需要补充素材!" % account_id)
-                self.write(json.dumps({"account_id": account_id, "message": "创意已经建满,不需要补充素材!"}))
-                self.flush()
-            else:
-                logger.info("account_id = %s, 需要补充的视频数量 = %s" % (account_id, video_cnt))
-
-                sql = """select account_id, single_appid, app_id_array, general_track from ctop_ai_kuaishou_advertiser_strategy
-                                 where account_id=%s order by create_time desc limit 1
-                              """ % account_id
-                df = pd.read_sql(sql, engine)
-                if df['general_track'].values[0] == 0:
-                    app_id_array = eval(df['app_id_array'].values[0])
-                    app_list = get_app_list(account_id=account_id, url=get_app_list_url)
-                    # app_dict key = ("appVersion": "ksjyrlyn-人类一脑涂地大败") , value = 完整的app_id信息
-                    app_dict = {}
-                    for app_info in app_list['data']:
-                        if app_info['appId'] in app_id_array:
-                            app_dict[app_info['appVersion']] = app_info
-                    video_list = get_top_video_info(account_id=account_id,
-                                                    url=get_high_quality_video_url,
-                                                    start_time=(now + datetime.timedelta(days=-2 * high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    end_time=(now + datetime.timedelta(days=-high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    cnt=video_cnt,
-                                                    app_version=None)
-
-                    # 单独处理返回的时候中,有通用视频,需要单独处理
-                    # "photo_name": "all",
-                    # "photo_name": "ksjytdrca-糖豆人冲啊",
-                    if video_list['code'] == 0:
+                    if df['general_track'].values[0] == 0:
+                        app_id_array = eval(df['app_id_array'].values[0])
+                        app_list = get_app_list(account_id=account_id, url=get_app_list_url)
+                        # app_dict key = ("appVersion": "ksjyrlyn-人类一脑涂地大败") , value = 完整的app_id信息
+                        app_dict = {}
+                        for app_info in app_list['data']:
+                            if app_info['appId'] in app_id_array:
+                                app_dict[app_info['appVersion']] = app_info
+                        # 单独处理返回的时候中,有通用视频,需要单独处理
+                        # "photo_name": "all",
+                        # "photo_name": "ksjytdrca-糖豆人冲啊",
                         video_df = pd.DataFrame(video_list['data'])
                         # 1-特定视频的创建
                         special_video_df = video_df[video_df.photo_name != 'all']
@@ -742,7 +556,7 @@ class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
                                 sql = """ select campaign_id, campaign_name from ctop_kuaishou_campaign where account_id = %s """ % account_id
                                 campaign_df = pd.read_sql(sql, engine)
                                 for row in campaign_df.itertuples():
-                                    if (app_version + '--优选广告位-' + '高质量素材') == getattr(row, 'campaign_name'):
+                                    if (app_version + '--优选广告位-' + campaign_group_name_place) == getattr(row, 'campaign_name'):
                                         campaign_id = getattr(row, 'campaign_id')
                                         break
                                 app_id_video_df = special_video_df[special_video_df.photo_name == photo_name]
@@ -752,77 +566,70 @@ class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
                                 request_data = get_request_data(account_id=account_id,
                                                                 campaign_id=campaign_id,
                                                                 video_info=app_id_video_list,
-                                                                campaign_name=app_version + '--优选广告位-' + '高质量素材',
-                                                                group_name=app_version + '-优选广告位-不限-自定义-' + '高质量素材',
-                                                                ai_strategy_remark="用高质量素材补满创意",
+                                                                campaign_name=app_version+'--优选广告位-'+campaign_group_name_place,
+                                                                group_name=app_version+'-优选广告位-不限-自定义-'+campaign_group_name_place,
+                                                                ai_strategy_remark="按小时补充创意-"+campaign_group_name_place,
                                                                 unit_type=4,
                                                                 app_id=app_id,
                                                                 click_track_url=track_url)
                                 request = ai_strategy_request_parse(request_data)
-                                logger.info("account_id=%s, app_id=%s, 用高质量素材补满创意-特定视频,ai策略的返回信息:%s" %
-                                            (account_id, app_id, request))
+                                logger.info("account_id=%s, app_id=%s, %s补充创意-特定视频,ai策略的返回信息:%s" %
+                                            (account_id, app_id, campaign_group_name_place, request))
 
                         # 2-通用视频的创建,random.shuffle 选择 app_id
                         general_video_df = video_df[video_df.photo_name == 'all']
                         if not general_video_df.empty:
+                            # 每 batch_num 一组 随机选择一个app_id 进行创建
+                            batch_num = 10
                             general_video_cnt = len(general_video_df)
                             app_version_list = list(app_dict)
                             random.shuffle(app_version_list)
+                            need_app_id_cnt = general_video_cnt // batch_num + 1
                             video_cnt = 0
-                            for app_version in app_version_list[:general_video_cnt]:
+                            for app_version in app_version_list[:need_app_id_cnt]:
                                 campaign_id = None
                                 app_id = app_dict[app_version].get('appId', 'error')
                                 track_url = app_dict[app_version].get('trackUrl', 'error')
                                 sql = """ select campaign_id, campaign_name from ctop_kuaishou_campaign where account_id = %s """ % account_id
                                 campaign_df = pd.read_sql(sql, engine)
                                 for row in campaign_df.itertuples():
-                                    if (app_version + '--优选广告位-' + '高质量素材') == getattr(row, 'campaign_name'):
+                                    if (app_version + '--优选广告位-' + campaign_group_name_place) == getattr(row, 'campaign_name'):
                                         campaign_id = getattr(row, 'campaign_id')
                                         break
-                                single_video = [general_video_df.iloc[video_cnt, :].T.to_dict()]
+
+                                batch_general_video_list = []
+                                for k, v in general_video_df.iloc[video_cnt: video_cnt+batch_num, :].T.to_dict().items():
+                                    batch_general_video_list.append(v)
                                 request_data = get_request_data(account_id=account_id,
                                                                 campaign_id=campaign_id,
-                                                                video_info=single_video,
-                                                                campaign_name=app_version + '--优选广告位-' + '高质量素材',
-                                                                group_name=app_version + '-优选广告位-不限-自定义-' + '高质量素材',
-                                                                ai_strategy_remark="用高质量素材补满创意",
+                                                                video_info=batch_general_video_list,
+                                                                campaign_name=app_version + '--优选广告位-' + campaign_group_name_place,
+                                                                group_name=app_version + '-优选广告位-不限-自定义-' + campaign_group_name_place,
+                                                                ai_strategy_remark="按小时补充创意-"+campaign_group_name_place,
                                                                 unit_type=4,
                                                                 app_id=app_id,
                                                                 click_track_url=track_url)
                                 request = ai_strategy_request_parse(request_data)
-                                video_cnt += 1
-                                logger.info("account_id=%s, app_id=%s, 用高质量素材补满创意-通用视频,ai策略的返回信息:%s" % (account_id, app_id, request))
+                                video_cnt += batch_num
+                                logger.info("account_id=%s, app_id=%s, %s补充创意-通用视频,ai策略的返回信息:%s" %
+                                            (account_id, app_id, campaign_group_name_place, request))
                         else:
-                            logger.info("account_id=%s, 用高质量素材补满创意: 返回的视频中没有通用视频" % account_id)
-                        self.write(json.dumps({"message": "account_id=%s, 用高质量素材补满创意请求已走完!" % account_id}))
-                        self.flush()
-                else:
-                    # 1-1 获取当天计划中包含“高质量素材”计划的,计划id
-                    sql = """
-                                       select campaign_id, campaign_name from ctop_kuaishou_campaign 
-                                       where account_id = %s
-                                       and put_create_time >= '%s'
-                                       and put_create_time <= '%s'
-                                       """ % (account_id, start_time, end_time)
-                    df = pd.read_sql(sql, engine)
-                    for row in df.itertuples():
-                        if '高质量素材' in getattr(row, 'campaign_name'):
-                            campaign_id = getattr(row, 'campaign_id')
-                            break
-
-                    video_info = get_top_video_info(account_id=account_id,
-                                                    cnt=video_cnt,
-                                                    start_time=(now + datetime.timedelta(days=-2 * high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    end_time=(now + datetime.timedelta(days=-high_quality_video_days)).
-                                                    strftime("%Y-%m-%d %H:%M:%S"),
-                                                    url=get_high_quality_video_url)
-                    if video_info['code'] != 0:
-                        logger.info("account_id = %s, 历史高质量素材填满, 没有获取到视频,不发送ai策略请求!" % account_id)
-                        self.write(json.dumps({"account_id": account_id,
-                                               "message": "历史高质量素材填满, 没有获取到视频,不发送ai策略请求!"}))
+                            logger.info("account_id=%s, %s补充创意: 返回的视频中没有通用视频" % (account_id, campaign_group_name_place))
+                        self.write(json.dumps({"message": "account_id=%s, %s补充创意请求已走完!" % (account_id, campaign_group_name_place)}))
                         self.flush()
                     else:
+                        # 获取当天计划中包含“campaign_group_name_place”计划的,计划id
+                        sql = """select campaign_id, campaign_name from ctop_kuaishou_campaign 
+                                 where account_id = %s
+                                 and put_create_time <= '%s'
+                                 and put_create_time >= '%s' """ % (account_id,
+                                                                    (datetime.datetime.now()).strftime('%Y-%m-%d %H:%M:%S'),
+                                                                    (datetime.datetime.now()).strftime('%Y-%m-%d'))
+                        df = pd.read_sql(sql, engine)
+                        for row in df.itertuples():
+                            if campaign_group_name_place in getattr(row, 'campaign_name'):
+                                campaign_id = getattr(row, 'campaign_id')
+                                break
                         campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
                         if (campaign_name is None) or (group_name is None):
                             logger.info("account_id = %s, 没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!" % account_id)
@@ -832,15 +639,20 @@ class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
                         else:
                             request_data = get_request_data(account_id=account_id,
                                                             campaign_id=campaign_id,
-                                                            video_info=video_info['data'],
+                                                            video_info=video_list['data'],
                                                             campaign_name=campaign_name,
                                                             group_name=group_name,
-                                                            ai_strategy_remark="用高质量素材补满创意",
-                                                            name_replace="高质量素材")
+                                                            ai_strategy_remark="按小时补充创意-"+campaign_group_name_place,
+                                                            name_replace=campaign_group_name_place)
                             request = ai_strategy_request_parse(request_data)
-                            logger.info("account_id = %s, 用高质量素材补满创意,ai策略的返回信息:%s" % (account_id, request))
+                            logger.info("account_id = %s, %s补充创意,ai策略的返回信息:%s" % (account_id, campaign_group_name_place, request))
                             self.write(json.dumps(request))
                             self.flush()
+                        
+                else:
+                    logger.info("account_id=%s, 按小时补充创意: 没有成功获取到视频!" % account_id)
+                    self.write(json.dumps({"message": "account_id=%s, 按小时补充创意: 没有成功获取到视频!" % account_id}))
+                    self.flush()
         except Exception:
             logger.error("account_id = %s, traceback is %s" % (account_id, traceback.format_exc()))
             self.write(json.dumps({"account_id": account_id, "message": traceback.format_exc(), "code": -1}))