任务存储器
在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
参数指定用于持久化任务的任务存储器键名。