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)规则​