Python定时任务APScheduler安装及使用解析

作者:不放弃自己 时间:2023-07-15 02:49:00 

1、简介

APScheduler是一个 Python 定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及 crontab 类型的任务,并且可以持久化任务、并以 daemon 方式运行应用。

2、APScheduler四个组件

APScheduler 四个组件分别为:触发器(trigger),作业存储(job store),执行器(executor),调度器(scheduler)。

触发器(trigger)

包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了他们自己初始配置意外,触发器完全是无状态的

APScheduler 有三种内建的 trigger:

  • date: 特定的时间点触发

  • interval: 固定时间间隔触发

  • cron: 在特定时间周期性地触发

作业存储(job store)

存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中。一个作业的数据讲在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储。
APScheduler 默认使用 MemoryJobStore,可以修改使用 DB 存储方案

执行器(executor)

处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。

最常用的 executor 有两种:

  • ProcessPoolExecutor

  • ThreadPoolExecutor

调度器(scheduler)

通常在应用中只有一个调度器,应用的开发者通常不会直接处理作业存储、调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业

2、安装

$ pip install apscheduler

接下来我们看下简单的几个示例:


===============interval: 固定时间间隔触发===============
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime

def job():
 print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 定义BlockingScheduler
sched = BlockingScheduler()
sched.add_job(job, 'interval', seconds=5)
sched.start()

===============cron: 特定时间周期性地触发===============
import time
from apscheduler.schedulers.blocking import BlockingScheduler

def job(text):
 t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
 print('{} --- {}'.format(text, t))

scheduler = BlockingScheduler()
# 在每天22点,每隔 1分钟 运行一次 job 方法
scheduler.add_job(job, 'cron', hour=17, minute='*/1', args=['job1'])
# 在每天22和23点的25分,运行一次 job 方法
scheduler.add_job(job, 'cron', hour='22-23', minute='25', args=['job2'])

scheduler.start()

通过装饰器scheduled_job()添加方法


import time
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

@scheduler.scheduled_job('interval', seconds=5)
def job1():
 t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
 print('job1 --- {}'.format(t))

@scheduler.scheduled_job('cron', second='*/7')
def job2():
 t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
 print('job2 --- {}'.format(t))

scheduler.start()

来源:https://www.cnblogs.com/hghua/p/13268007.html

标签:Python,定时,任务,APScheduler
0
投稿

猜你喜欢

  • 详解MySQL数据库中字符串的正确使用

    2010-06-20 15:01:00
  • js实现通过开始结束控制的计时器

    2024-04-18 09:39:03
  • php中preg_match的isU代表什么意思

    2024-05-03 15:13:51
  • Python学习之列表常用方法总结

    2021-11-24 18:43:19
  • Oracle存储过程入门学习基本语法

    2009-03-04 11:00:00
  • 合成大西瓜开发源码手把手教你运行和部署大西瓜游戏项目(附源码)

    2023-11-01 05:39:13
  • sql语句中单引号,双引号的处理方法

    2024-01-20 06:59:00
  • 慢慢的网页

    2009-11-12 12:53:00
  • MySQL数据库的自动备份与数据库被破坏后的恢复

    2010-03-18 15:30:00
  • Python内置函数bin() oct()等实现进制转换

    2021-05-15 05:15:42
  • Python pandas RFM模型应用实例详解

    2023-10-15 23:27:34
  • python 包之 multiprocessing 多进程

    2021-02-25 12:13:15
  • 基于PHP的加载类操作以及其他两种魔术方法的应用实例

    2024-05-11 09:55:18
  • Python中类的定义、继承及使用对象实例详解

    2023-07-11 17:10:37
  • python实现自动发送邮件发送多人、群发、多附件的示例

    2023-01-13 22:24:32
  • python实现银行实战系统

    2023-04-14 18:55:19
  • Ubuntu20.04环境安装tensorflow2的方法步骤

    2023-07-04 06:41:21
  • python3 线性回归验证方法

    2022-12-03 10:49:09
  • 简单瞅瞅Python vars()内置函数的实现

    2021-03-29 20:41:05
  • python内打印变量之%和f的实例

    2021-06-19 07:46:46
  • asp之家 网络编程 m.aspxhome.com