APScheduler的自定义配置只需要在创建调度器的时候传入相关的参数即可,我们可以手动指定执行器、存储器以及任务的默认配置等。
执行器
配置 default执行器为 ThreadPoolExecutor,并且设置最多的线程数是20个。
存储器
配置 default的任务存储器为 SQLAlchemyJobStore(使用SQLite)。
任务默认配置
- coalesce=False:设置这个目的是,比如由于某个原因导致某个任务积攒了很多次没有执行(比如有一个任务是1分钟跑一次,但是系统原因断了5分钟),如果coalesce=True,那么下次恢复运行的时候,会只执行一次,而如果设置coalesce=False,那么就不会合并,会5次全部执行。
- max_instances=5:同一个任务同一时间最多只能有5个实例在运行。比如一个耗时10分钟的job,被指定每分钟运行1次,如果我max_instance值5,那么在第6~10分钟上,新的运行实例不会被执行,因为已经有5个实例在跑了。
示例代码
from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore from apscheduler.executors.pool import ThreadPoolExecutor def interval_task(): jobstores = { 'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite') } executors = { 'default': ThreadPoolExecutor(20) } job_defaults = { 'coalesce': False, 'max_instances': 3 } scheduler = BlockingScheduler(jobstores=jobstores,executors=executors,job_defaults=job_defaults) scheduler.add_job(tick,"interval",minutes=1) scheduler.start()