任务存储器

在APScheduler中,任务存储器的作用是用来持久化任务执行和调度状态。其中主要记录了任务上一次执行的时间,和下一次执行时间,有哪些任务需要执行。建立任务存储器一般只需要指定持久化位置即可,例如数据库连接串等。APScheduler提供了以下任务存储器供选择使用。

  • MemoryJobStore,内存任务存储器。
  • MongoDBJobStore,MongoDB任务存储器。
  • RedisJobStore,Redis任务存储器。
  • RethinkDBJobStore,RethinkDB任务存储器。
  • SQLAlchemyJobStore,借助SQLAlchemy向数据库保存任务的任务存储器,需要指定SQLAlchemy的engine。
  • ZooKeeperJobStore,将任务保存至ZooKeeper树的任务存储器。

任务存储器一般定义为一个字典,传递给调度器的jobstores参数来设定。具体可见以下示例。

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.jobstores.redis import RedisJobStore


jobstores = {
	'sqlalchemy': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite'),
	'default': RedisJobStore(db=0, host='localhost')
}

scheduler = BackgroundScheduler(jobstores=jobstores)

当任务存储器有多个时,默认情况下任务会被添加到键为default的任务存储器中,如果需要将任务添加到不同的任务储存器中,可以使用.add_job()jobstore参数指定用于持久化任务的任务存储器键名。