1. APScheduler有四个组件:
- triggers: 触发器,用于设定触发任务的条件,触发器包含了调度的逻辑,每个任务都有自己的触发器决定该任务下次运行的时间。 job
stores: 任务储存器,用于存放任务,把任务放在内存或者数据库中,一个
executors: 执行器,用于执行任务,可以设定执行模式为单线程或者线程池,任务完毕后,执行器会通知调度器
schedulers: 调度器,上面的三个组件都是参数,使用这三个参数创建调度器实例来运行
2. 调度器的选择
根据不同的开发需求,选择对应的调度器组件
- BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。 BackgroundScheduler
- 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。 AsyncIOScheduler
- AsyncIO调度器,适用于应用使用AsnycIO的情况。 GeventScheduler
- Gevent调度器,适用于应用通过Gevent的情况。 TornadoScheduler
- Tornado调度器,适用于构建Tornado应用。 TwistedScheduler
- Twisted调度器,适用于构建Twisted应用。 QtScheduler Qt调度器,适用于构建Qt应用。
3. 任务储存器的选择
- 如果运行的任务是无状态的,选择默认的任务储存器MemoryJobStore即可。
- 如果需要程序关闭或者重启的时候,保存任务的状态,那么需要持久化的任务储存器比如SQLAlchemyJobStore配合postgres作为后台数据库。
4. 执行器的选择
- 默认的ThreadPoolExecutor线程池执行器方案可以满足大部分需求
- 如果程序是计算密集型,推荐使用ProcessPoolExecutor进程池执行器使用多核能力,还可以混合使用两种
5. 配置任务触发器
一共有三种内置的触发器:
- date 日期,触发任务运行的具体时间
- interval 间隔,触发任务运行的时间间隔
- cron 周期,触发任务运行的周期,较复杂,check it in google
详细配置规则请参考: django-apscheduler中 作业运行的控制(trigger)规则