Python BackgroundScheduler中Interval、Cron及偏移量的使用方法

开发 后端
AInterval 和 Cron 是 Apscheduler 库中常用的两种触发器类型。以下是 Interval 和 Cron 的使用方法.

Python中interval和cron的使用方法

  • apscheduler 库 是 Python 中一个功能强大的定时任务库。
  • interval 和 cron 是 apscheduler 库中常用的两种触发器类型。
  • interval 触发器 用于指定任务执行的间隔时间。
  • cron 触发器 用于指定任务执行的时间表达式。

以下是 interval 和 cron 的使用方法:

1. interval 触发器

示例:

from apscheduler.schedulers.background import BackgroundScheduler

def job1():
    logging.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))} 执行')

# 创建调度器
scheduler = BackgroundScheduler()

# 添加定时任务
scheduler.add_job(job1, 'interval', seconds=3600)

# 启动调度器
scheduler.start()

以上代码将每小时执行一次 job1() 函数。

2. interval 偏移量

interval 触发器 支持偏移量,用于指定任务执行时间的随机偏移量。

语法:

scheduler.add_job(func, 'interval', seconds=3600, jitter=3600)

参数:

  • jitter: 偏移量

当使用 BackgroundScheduler 的 add_job 方法时,可以通过 jitter 参数来添加偏移量,以增加任务执行时间的随机性。jitter 是一个可选参数,用于指定任务执行时间的随机偏移范围。

具体来说,jitter 参数允许你在指定的时间间隔内随机选择一个偏移量,将它添加到任务的执行时间上。这样可以避免在同一时间执行大量任务,减轻系统负载和资源竞争。

示例:

from apscheduler.schedulers.background import BackgroundScheduler

def job1():
    logging.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))} 执行')

# 创建调度器
scheduler = BackgroundScheduler()

# 添加定时任务
scheduler.add_job(job1, 'interval', seconds=3600, jitter=3600)

# 启动调度器
scheduler.start()

以上代码使用 add_job 方法添加了一个任务,并使用 interval 触发器指定了任务的执行方式。seconds=3600 表示任务将每隔 3600 秒(1 小时)执行一次。jitter=3600 表示在每次任务执行时间的基础上,随机选择一个介于 -3600 和 3600 秒之间的偏移量。这样,任务的实际执行时间将在每小时的范围内有轻微的随机变化。

通过使用 jitter 偏移量,可以避免多个任务在完全相同的时间点执行,从而更好地分散任务负载并提高系统的可靠性和性能。

需要注意的是,jitter 偏移量的单位与触发器中指定的时间间隔单位相同。在上述示例中,seconds=3600 表示时间间隔为秒,因此 jitter=3600 的单位也是秒。如果使用其他时间单位(如分钟或小时),则偏移量应相应地进行调整。

总结:jitter 偏移量允许你给任务的执行时间添加一定的随机性,以避免任务在完全相同的时间点执行。通过在 add_job 方法中设置 jitter 参数,你可以控制偏移量的范围和单位,以满足任务调度的需求。

3. cron 触发器

示例:

from apscheduler.schedulers.background import BackgroundScheduler

def job1():
    logging.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))} 执行')

# 创建调度器
scheduler = BackgroundScheduler()

# 添加定时任务
scheduler.add_job(job1, 'cron', hour='*')

# 启动调度器
scheduler.start()

以上代码将在每小时的 00 分执行一次 job1() 函数。

4.cron 时间表达式

cron 触发器 支持时间表达式,用于指定任务执行的时间。

时间表达式的格式:

分钟 小时 天 月 星期

每个字段可以使用以下值:

  • *: 表示所有值
  • ,: 表示分隔符
  • -: 表示范围
  • /: 表示间隔

示例:

from apscheduler.schedulers.background import BackgroundScheduler

def job1():
    logging.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))} 执行')

# 创建调度器
scheduler = BackgroundScheduler()

# 添加定时任务
scheduler.add_job(job1, 'cron', hour='12', minute='30')

# 启动调度器
scheduler.start()

以上代码将在12点的 30 分执行一次 job1() 函数。

责任编辑:姜华 来源: 今日头条
相关推荐

2023-08-07 09:18:32

Golang偏移量接口

2022-08-15 10:45:34

RocketMQ消息队列

2010-03-10 11:11:16

Python编程

2017-06-07 10:00:56

PythonBeautifulSo解析器

2023-06-28 08:34:02

Bind()函数JavaScript

2017-08-18 14:01:44

大数据dataWrangle

2010-11-19 09:56:38

SQLiteAndroid

2023-05-11 08:00:44

Golangsync.Pool

2009-08-04 08:32:06

Linux Find命Linux Find使用方法

2010-03-10 19:18:10

Python scri

2017-05-27 20:00:30

Python爬虫神器PyQuery

2010-10-08 14:27:25

JavascriptSplit

2011-06-14 10:18:58

QThread Qt 线程

2010-10-09 10:30:03

JS event

2011-08-03 17:27:40

iPhone UIScrollVi

2009-06-12 18:35:33

JSF f:loadB

2010-07-05 09:38:47

LinuxNFS

2011-02-14 10:21:04

Windows PowWMI

2009-09-23 13:23:12

Hibernate M

2013-06-08 17:09:35

Android开发移动开发XML解析
点赞
收藏

51CTO技术栈公众号