python3 实现定时任务模块apscheduler

定时任务说明

from apscheduler.schedulers.blocking import BlockingScheduler


# 定时任务 cron
@gl_error_register   # 装饰器,用于捕捉程序异常的操作
def time_job(func):
    '''
    定时执行 func 函数
    :param func:函数名
    :return:
    '''
    scheduler = BlockingScheduler(timezone="Asia/Shanghai") 
    scheduler.add_job(func, 'cron', day_of_week='0-6', hour=16, minute=26)  # day_of_week:0-6 周日到周六,     参数:每一天的16:26分执行任务func函数
    scheduler.start()

'''
更多参数参考
#每300秒执行一次
scheduler .add_job(job, 'interval', seconds=300)
 
#在1月,3月,5月,7-9月,每天的下午2点,每一分钟执行一次任务
scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')
 
# 当前任务会在 6、7、8、11、12 月的第三个周五的 0、1、2、3 点执行
scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
 
#从开始时间到结束时间,每隔俩小时运行一次
scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00')
'''

BlockingScheduler的timezone参数需添加
timezone参数需要设置,否则可能会出现报错 Timezone offset does not match system offset: 0 != -32400. Please, check your config file

装饰器说明

# 装饰器部分
# 捕捉异常和处理  邮件通知
def gl_error_register(actual_do,mac_address=None,device_type=None):
    def add_robust(*args, **keyargs):
        try:
            return actual_do(*args, **keyargs)
        except Exception as ex:
            ex_type, ex_val, ex_stack = sys.exc_info()
            # 错误类型
            error_result = str(ex_type)+"\n"
            # 报错内容
            error_result += str(ex_val)+"\n"
            # 报错的对象
            error_result += str(ex_stack)+"\n"
            # print(ex_type)
            # print(ex_val)
            for stack in traceback.extract_tb(ex_stack):
                print(stack)
                error_result+=str(stack)+"\n"
            print('Error execute: %s' % actual_do.__name__)
            print([error_result])
            # 发送程序崩溃通知邮件
            email_html="""
            邮件通知内容:
            %s
            """%error_result  # 注意报错内容的<>符号,会被邮件转义,建议替换成 []
			
            email_app = email_send() # 自定义 发送邮件类
            email_app.my_send_email(email_html, title='【邮件标题】',
                                    target_email_list=EMAIL_CONFIG['send_target'])

            time.sleep(5) # 发送完邮件 阻塞5S

            return error_data
    return add_robust
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值