python 定时任务APScheduler

  1. APScheduler四个组件
  2. triggers触发器
    包含调度逻辑,每一个job有它自己的触发器,用于决定job下一次运行时间。除了初始配置外,触发器完全是无状态的。
  3. job stores作业存储
    存储被调度的job,默认的job存储是简单地把job存储在内存中,其他的job存储是保存在数据库中。Job的数据在保存到持久化存储时被序列化,并在加载时进行反序列化。job存储(默认存储除外)不将job数据保存在内存中,而是充当后台保存、加载、更新和搜索job的中间人。job存储永远不能在调度程序之间共享。
  4. executors执行器
    负责处理job的运行,通过将job中指定的可调用对象 提交给一个线程或进程池来运行。当job完成时,执行器将会通知调度器,然后调度程序发出相应event。
  5. schedulers调度器
    一个应用程序中通常只有一个调度器在运行,应用程序开发人员通常不会直接处理job存储、执行器和触发器,相反,调度器程序提供了处理这些事件的接口。
安装
pip install apscheduler==3.6.0
初始化
'''
默认使用的ThreadPoolExecutor就可以满足大多数场景。如果工作涉及CPU密集型操作,则应该考虑使用
ProcessPoolExecutor来充分利用多个CPU内核。也可以同时使用这两种方法,将进程池执行器添加为辅助执行器
'''
executors = {
        'default': ThreadPoolExecutor(5),
}
'''
max_instances: 默认情况下,每个作业只能同时运行一个实例。这意味着,如果有作业即将运行,但前一个运行尚未完成,则最新的运行
将无效。通过在添加作业时使用max_instances关键字参数,可以为调度程序设置允许并发运行的特定作业的最大实例
数
coalesce: 如果系统因某些原因没有执行任务,导致任务累计,为True则只运行最后一次,为False 则累计的任务全部跑一遍
'''
job_defaults = {
    'coalesce': False, 
    'max_instances': 1
}
#调度器在当前进程的主线程中运行,也就是会阻塞当前线程
scheduler = BlockingScheduler(job_defaults=job_defaults, executors=executors)
添加job
'''
trigger: 
	interval:指定时间间隔(fixed intervals)周期性执行
	date: 指定某个确定的时间点,job仅执行一次
	cron: 使用cron风格表达式周期性执行,用于(在指定时间内)定期运行job的场景
misfire_grace_time: 主要就是为了解决这个was missed by 这个报错,添加允许容错的时间,单位为:s
'''
scheduler.add_job(eglv.main, trigger='interval', minutes=10, misfire_grace_time=60*2)
scheduler.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值