调度器APScheduler定时执行任务

APScheduler(Advanced Python Scheduler)是一个Python库,用于调度任务,使其在预定的时间间隔或特定时间点执行。它支持多种调度方式,包括定时(interval)、日期(date)和Cron风格的调度(cron)。

APScheduler的主要组件

Schedulers(调度器):

BlockingScheduler:最简单的调度器,会阻塞当前线程,适用于单独的调度任务。

BackgroundScheduler:在后台运行,不阻塞当前线程,适用于需要在其他程序中运行的调度任务。

AsyncIOScheduler、GeventScheduler、TwistedScheduler:用于与特定的异步框架集成。

Jobs(任务):

表示要在某个时间执行的任务,可以是函数或方法。

Triggers(触发器):

决定任务何时执行。有三种主要触发器类型:

date:在特定时间执行一次。

interval:以固定的时间间隔重复执行。

cron:基于Cron表达式,在特定的时间点执行。

实践

python 复制代码
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger

scheduler = BackgroundScheduler(timezone=pytz.timezone("Asia/Shanghai"))
# 解决错误: raise TypeError('Only timezones from the pytz library are supported' )ypeError: Only timezones from the pytz library are supported
# 运行任务
scheduler.add_job(task1, 'cron', hour='8' , minute='30') # 每天发送一次
scheduler.add_job(task2, 'cron', hour='8', minute='30') # 每天发送一次

try:
    scheduler.start()
    normal_log.logger.info('调度器已启动...')

    # 使脚本持续运行
    while True:
        time.sleep(2)
except (KeyboardInterrupt, SystemExit):
    scheduler.shutdown()

触发器类型

相关推荐
聪明蛋子哟6 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
今天AI了吗6 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
卷无止境6 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
TELL5217 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
Csvn7 小时前
🐍 Day 4: Python 控制流 — 条件、循环与推导式的艺术
后端·python
大鹏说大话9 小时前
从爬虫到决策引擎:大数据下自媒体如何用Python挖掘用户痛点
开发语言·爬虫·python
Niuguangshuo9 小时前
silero-vad:超轻量级开源 VAD 实践指南
开发语言·python
2501_9446761610 小时前
揭秘!WORDTIP公司靠不靠谱?小白必看
大数据·人工智能·python
Minner-Scrapy11 小时前
Scrapy 2.17 源码解析:Scheduler 调度器与磁盘/内存双队列
java·爬虫·python·scrapy·网络爬虫·twisted
CODER030411 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全