目录
1-3-1 任务添加 - add_job()、装饰器 scheduled_job()
1-3-2 任务删除 - remove_job()、remove()
1-3-3 任务继续和暂停 - resume_job、pause_job
1-3-4 任务的修改和重设 - modify、reschedule_job
2-1 基于flask-apscheduler 出现无法应用上下文的错误
一、apscheduler 轻量级的定时调度
1-1 基本概念 - APScheduler 的四种组件
- 触发器 triggers - 提供任务触发方式
- 触发器 包含调度逻辑。
- 每个作业都有自己的触发器,用于确定何时应该运行作业。
- 除了初始配置之外,触发器完全是无状态的。
- 商店 job stores - 提供任务保存方式
- 工作商店安排预定的工作。
- 默认作业存储只是将作业保留在内存中,但其他人将它们存储在各种类型的数据库中。
- 作业的数据在保存到持久性作业存储时会被序列化,并在从其中加载时进行反序列化。
- 作业存储(默认存储除外)不会将作业数据保留在内存中,而是充当中间人,用于在后端保存,加载,更新和搜索作业。
- 绝不能在调度程序之间共享作业存储。
- 执行人 executors - 提供任务调度方式
- 执行程序处理作业的运行。
- 他们通常通过将作业中指定的可调用对象提交给线程或进程池来完成此操作。
- 作业完成后,执行程序会通知调度程序,调度程序随后会发出相应的事件。
- 调度 schedulers - 提供任务工作方式
- 调度程序将其余部分绑定在一起。
- 您通常只在应用程序中运行一个调度程序。
- 应用程序开发人员通常不直接处理作业存储,执行程序或触发器。
- 相反,调度程序提供适当的接口来处理所有这些。
- 配置作业存储和执行程序是通过调度程序完成的,添加,修改和删除作业也是如此。
1-2 triggers 组件 - 提供三种触发方式
1-2-1 date - 在某个时间点执行一次(一次性)
from datetime import date from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler() def my_job(text): print(text) # 指出确切执行时间的三种方式,date、datetime、字符串 # The job will be executed on November 6th, 2009 sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text']) # The job will be executed on November 6th, 2009 at 16:30:05 sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text']) # 指定格式的文本字符串 sched.add_job(my_job, 'date', run_date='2009-11-06 16:30:05', args=['text']) # 添加即刻运行的作业 # The 'date' trigger and datetime.now() as run_date are implicit sched.add_job(my_job, args=['text']) sched.start() ''' 相关参数 run_date(datetime | str) - 运行作业的日期/时间,为空则使用但前时间 timezone(datetime.tzinfo | str) - run_date如果它还没有时区的时区 '&#