|
@@ -12,7 +12,7 @@ import random
|
|
|
import requests
|
|
|
from utils.commonFunc import get_db_engine, is_contains_gender, is_contains_age, is_contains_region
|
|
|
from utils.BaseClass import NpEncoder
|
|
|
-from config.url import create_campaign_url, create_group_and_creative_url, headers
|
|
|
+from config.url import create_campaign_url, create_group_and_creative_url, headers, update_campaign_status_url
|
|
|
import logging
|
|
|
from concurrent_log import ConcurrentTimedRotatingFileHandler
|
|
|
|
|
@@ -157,8 +157,6 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
'day_budget': self.advertiser_strategy['campaign_day_budget'],
|
|
|
'day_budget_schedule': eval(self.advertiser_strategy['campaign_day_budget_schedule'])
|
|
|
if self.advertiser_strategy['campaign_day_budget_schedule'] else None}
|
|
|
- # TODO self.advertiser_strategy['campaign_status'] 如果为暂停,需要创建成功后,调用修改广告计划状态的接口
|
|
|
-
|
|
|
request = requests.post(url=create_campaign_url,
|
|
|
headers=headers,
|
|
|
data=json.dumps(create_campaign_request_data, cls=NpEncoder))
|
|
@@ -183,6 +181,26 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
campaign_info_to_db['status'] = response_data.get('code', None)
|
|
|
campaign_info_to_db['message'] = response_data.get('message', None)
|
|
|
|
|
|
+ # self.advertiser_strategy['campaign_status'] 如果为暂停,需要创建成功后,调用修改广告计划状态的接口
|
|
|
+ # `campaign_status` int(11) DEFAULT '1' COMMENT '计划状态: 1:投放 2:暂停 '
|
|
|
+ if self.advertiser_strategy['campaign_status'] == 2:
|
|
|
+ update_campaign_status_request = requests.post(url=update_campaign_status_url,
|
|
|
+ headers=headers,
|
|
|
+ data=json.dumps({'accountId': self.account_id,
|
|
|
+ 'putStatus': 2,
|
|
|
+ 'userId': '113dee46c7df464da78c07a985e92cd1',
|
|
|
+ 'campaignIds': [self.campaign_id]},
|
|
|
+ cls=NpEncoder))
|
|
|
+ update_campaign_status_response_data = json.loads(update_campaign_status_request.text)
|
|
|
+ if update_campaign_status_response_data.get('result') and \
|
|
|
+ update_campaign_status_response_data.get('result').get('failCount') == 0:
|
|
|
+ logger.info("账户 %s 下的广告计划 %s 暂停成功!" % (self.account_id, self.campaign_id))
|
|
|
+ else:
|
|
|
+ logger.error("账户 %s 下的广告计划 %s 暂停失败,异常信息: %s!" %
|
|
|
+ (self.account_id,
|
|
|
+ self.campaign_id,
|
|
|
+ str(update_campaign_status_response_data.get('result'))))
|
|
|
+ raise Exception("账户 %s 下的广告计划 %s 暂停失败!" % (self.account_id, self.campaign_id))
|
|
|
else:
|
|
|
campaign_info_to_db['message'] = response_data['message']
|
|
|
campaign_info_to_db['status'] = response_data['code']
|
|
@@ -312,7 +330,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
creative_cnt_df = creative_cnt_df[creative_cnt_df.creative_count < 200]
|
|
|
|
|
|
# 1-2 计算每个素材还能创建的广告组(定向)个数: (200 - 已关联创意个数) / 15
|
|
|
- creative_cnt_df['target_combine_cnt'] = np.floor((200 - creative_cnt_df['creative_count']) / 15)
|
|
|
+ creative_cnt_df['target_combine_cnt'] = int(np.floor((200 - creative_cnt_df['creative_count']) / 15))
|
|
|
|
|
|
final_target_combine = pd.DataFrame([])
|
|
|
for sig in creative_cnt_df.signature.unique():
|