首页 > 编程语言 >Python APScheduler介绍及使用

Python APScheduler介绍及使用

时间:2024-03-20 13:45:30浏览次数:24  
标签:Python job 介绍 调度 APScheduler int str date

在许多应用程序中,需要定期执行某些任务,例如发送电子邮件、生成报告或清理临时文件等。为了管理和调度这些任务,Python中有许多优秀的调度器库,其中APScheduler是一个流行且功能强大的选择。本文将介绍APScheduler的基本概念,并展示如何使用它来实现定时任务调度。

一、APScheduler简介

APScheduler是一个轻量级的Python任务调度库,提供了多种调度器(Scheduler)、触发器(Trigger)和作业存储(Job Store)等组件,可以满足各种定时任务调度需求。它的特点包括:

灵活的调度方式:支持间隔调度、定时调度、CRON表达式调度等多种调度方式。
多种触发器:提供了简单的时间触发器、日期触发器、CRON触发器等多种触发器类型。
可扩展的作业存储:支持内存、数据库等多种作业存储方式,方便管理和持久化存储作业信息。

二、安装APScheduler

在开始使用APScheduler之前,首先需要安装该库。

pip install apscheduler

三、使用示例

1 创建定时任务
下面是一个简单的示例,演示了如何使用APScheduler创建一个每隔5秒执行一次的定时任务。

"""
interval参数说明
    weeks               (int)                   number of weeks to wait
    days                (int)                   number of days to wait
    hours               (int)                   number of hours to wait
    minutes             (int)                   number of minutes to wait
    seconds             (int)                   number of seconds to wait
    start_date          (datetime|str)          starting point for the interval calculation
    end_date            (datetime|str)          latest possible date/time to trigger on
    timezone            (datetime.tzinfo|str)   time zone to use for the date/time calculations
    --------------------------------------------------------------------------------
    weeks               (int)                   间隔几周
    days                (int)                   间隔几天
    hours               (int)                   间隔几小时
    minutes             (int)                   间隔几分钟
    seconds             (int)                   间隔多少秒
    start_date          (datetime 或 str)        开始日期
    end_date            (datetime 或 str)        结束日期
    timezone            (datetime.tzinfo 或str)  用于日期/时间计算的时区
"""
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

# 定义任务函数
def job_function():
    print("Hello World")

# 创建调度器
sched = BlockingScheduler()

# 安排每两小时调用一次
sched.add_job(job_function, 'interval', hours=2)
# 与之前相同,但于2010年10月10日9:30开始,于2014年6月15日11:00停止
sched.add_job(job_function, 'interval', hours=2, start_date='2010-10-10 09:30:00', end_date='2014-06-15 11:00:00')

# 启动调度器
sched.start()

2 使用CRON表达式
除了间隔调度外,APScheduler还支持使用CRON表达式来指定定时调度。

"""
cron参数说明
    year            (int|str) – 4-digit year
    month           (int|str) – month (1-12)
    day             (int|str) – day of the (1-31)
    week            (int|str) – ISO week (1-53)
    day_of_week     (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun)
    hour            (int|str) – hour (0-23)
    minute          (int|str) – minute (0-59)
    second          (int|str) – second (0-59)
    start_date      (datetime|str) – earliest possible date/time to trigger on (inclusive)
    end_date        (datetime|str) – latest possible date/time to trigger on (inclusive)
    timezone        (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone)
"""
from apscheduler.schedulers.blocking import BlockingScheduler

def job_function():
    print("Hello World")

# 创建调度器
sched = BlockingScheduler()

# 6月、7月、8月、11月和12月的00:00、01:00、02:00和03:00
sched.add_job(job_function, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
# 周一至周五上午5:30运行至2014-05-30 00:00:00
sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2014-05-30')
# 每天凌晨1点执行任务
scheduler.add_job(job_function, 'cron', hour=1, minute=0)

# 启动调度器
sched.start()

3 添加任务监听器
可以添加任务监听器来监听任务的执行状态,例如任务开始、任务执行出错等。

def my_listener(event):
    if event.exception:
        print('任务出错了!')

scheduler.add_listener(my_listener, 'job_error')

四、高级用法

1 添加持久化存储
可以将任务调度信息存储到持久化存储中,以便在应用重启后恢复调度状态。

from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore

jobstores = {
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
scheduler = BlockingScheduler(jobstores=jobstores)

结语

通过本文的介绍,您已经了解了APScheduler的基本概念及如何使用它来实现定时任务调度。APScheduler提供了丰富的调度方式和灵活的配置选项,能够满足各种复杂的任务调度需求。在实际应用中,可以根据具体情况选择合适的调度方式和配置选项,并根据需要添加任务监听器和持久化存储,以提高任务调度的可靠性和可维护性。

标签:Python,job,介绍,调度,APScheduler,int,str,date
From: https://www.cnblogs.com/ningningqi/p/18085030

相关文章

  • MySQL介绍及其语法
    1、MySQL的基本认识MySQL是关系型数据库的管理系统,关系型数据库的特点是,将数据存储在不同的表中,再将表放在不同的数据库中,而不是集中放在一个仓库里面,这样有助于快速查询信息和管理,访问以及管理数据库使用的标准化语言是SQL。2、SQL的基本介绍SQL:structure query lan......
  • Linux crontab 定时器介绍和使用
    Linuxcrontab是一个用于定时执行任务的工具,它可以让用户在指定的时间执行特定的命令或脚本。当安装完成操作系统之后,系统默认便会启动此任务调度命令,可以查看服务运行状态:servicecrondstatuscrontab的配置文件通常位于/etc/crontab或/etc/cron.d/目录下,用户也可以......
  • python自动化——selenium——教程截图笔记复习
      需要现在和浏览器对应的驱动:               123 123......
  • AI回答:python中如何实现[异或]的?什么是异或?
    问题:python中如何实现[异或]的?什么是异或?AI:异或(ExclusiveOR,简称XOR)是一种二进制运算,符号通常为"^"。在这种运算中,如果两个比较的位(bit)相同,则结果为0;如果两个比较的位不同,则结果为1。异或运算在计算机科学中有着广泛的应用,比如在错误检测和校正、密码学以及某些算法中。在Pyt......
  • 如何自己写一个Python库
    一文搞懂如何自己写一个Python库你是否有过疑问,通过pip安装的库都是如何编写的?你是否曾想过为自己的Python项目编写一个库,以便在不同项目中重复使用代码?并且能在PyPI仓库中发布,并通过pipinstall库名来安装使用1.png 编写Python库可能看起来有些复杂,但实际上并非如此。本......
  • Ubuntu 上安装python2.7
    Ubuntu20.04LTS默认安装的是python3,如果需要使用python2.7,需要自己进行安装。一、启用Universe仓库一般情况下其实应该是已经启用了,但是还是记录一下手动添加的方法sudoapt-add-repositoryuniversesudoaptupdate二、安装python2.7使用以下命令安装python2.7sudoapt......
  • python parse time
    utils.py:importrefromdatetimeimportdatetimefromtypingimportUnion#pipinstallpython-dateutilfromdateutilimportparserdefparse_time(s:Union[int,float,str])->datetime:"""将字符串或数值转换为datetimeUsage::......
  • 19.html+css网页设计实例/“美妆”口红主题介绍/web前端期末大作业/
    前言本文以“美妆”口红网页为主题设计,本实例系统文件种类包含:html结构文件、css网页样式文件。应用DIV、点击事件、表格、搜索等,供大家参考。【关注作者|获取更多源码(2000+个Web案例源码)|优质文章】;您的支持是我创作的动力!看到这里就【点赞收藏博文】,三连支持下吧,3Q!有兴趣的......
  • Python配置文件使用教程
    在Python应用程序开发过程中,配置文件扮演着重要的角色。配置文件可以用来存储应用程序的各种设置、选项和参数,使得程序更加灵活和可配置。本文将介绍Python中如何使用配置文件,并提供一些常见的配置文件处理方法。一、配置文件格式常见的配置文件格式有多种,包括INI格式、J......
  • Python打包成可执行文件(.exe)教程
    在Python开发中,将Python脚本打包成可执行文件(.exe)是一种常见的需求。将Python代码打包成可执行文件可以使得程序在没有安装Python解释器的环境下运行,也方便程序的发布和分发。本文将介绍几种常见的方法来将Python代码打包成可执行文件。一、pyinstallerpyinstaller是......