Python - 定时调度 - apscheduler

本文详细介绍了APSchedular的定时调度机制,包括基本概念、triggers组件的三种触发方式(date、interval、cron)、任务的添加、删除、暂停与修改等操作。此外,还讨论了在Flask中使用APSchedular时可能出现的上下文问题。
摘要由CSDN通过智能技术生成

目录

一、apscheduler 轻量级的定时调度

1-1 基本概念 - APScheduler 的四种组件

1-2 triggers 组件 - 提供三种触发方式

1-2-1 date - 在某个时间点执行一次(一次性)

1-2-2 interval - 相隔指定时间段执行

1-2-3 cron - 指定某个时间点执行

1-3 任务操作

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

二、Flask-apscheduler

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如果它还没有时区的时区
'&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值