from model.DateUtils import DateUtils
from app.api_data.tx_ad_cost import get_cost
from app.etl.dw import dw_image_cost_day
import time
from model.DingTalkUtils import DingTalkUtils
import logging
from logging import handlers
import multiprocessing

du = DateUtils()


def hourly_run():
    # 广告数据
    get_cost.hourly()  # 广告相关消耗数据
    dw_image_cost_day.hourly()


if __name__ == '__main__':
    logging.basicConfig(
        handlers=[
            logging.handlers.RotatingFileHandler('./log/ad_hourly.log',
                                                 maxBytes=10 * 1024 * 1024,
                                                 backupCount=5,
                                                 encoding='utf-8')
            , logging.StreamHandler()  # 供输出使用
        ],
        level=logging.INFO,
        format="%(asctime)s - %(levelname)s %(filename)s %(funcName)s %(lineno)s - %(message)s"
    )
    logging.info('广告素材任务,开始')
    st = time.time()

    hourly_process = multiprocessing.Process(target=hourly_run)
    hourly_process.daemon = True
    hourly_process.start()

    while 1:
        if time.time() - st > 3000:
            logging.info('进程运行超过50分钟,强制停止')
            break
        if not hourly_process.is_alive():
            break

    if int(time.time() - st) > 1500:
        DingTalkUtils().send(f"素材小时任务耗时{int(time.time() - st)}秒", phone="15168342316")

    logging.info('广告素材任务,结束')