APScheduler-BackgroundScheduler

一、介绍

    BackgroundScheduler 是 APScheduler(Advanced Python Scheduler)库中的一个调度器,允许在后台运行定时任务。使用 BackgroundScheduler 可以方便地在应用程序中添加和管理定时任务,而不会阻塞主线程的运行。

APScheduler 提供了四种调度器:

  1. BlockingScheduler:适用于独立运行的程序,调度器会阻塞主线程。
  2. BackgroundScheduler:适用于需要在后台运行任务的程序,不会阻塞主线程。
  3. AsyncIOScheduler:适用于 asyncio 异步框架。
  4. TornadoScheduler:适用于 Tornado 框架。

二、任务管理

1、创建调度器
from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()
2、添加任务
def job_function():
    print("Hello, the job is running!")

# 添加一个定时任务,每5秒执行一次
scheduler.add_job(job_function, 'interval', seconds=5)
3、启动调度器 
scheduler.start()
4、关闭调度器
scheduler.shutdown()
5、暂停任务
scheduler.pause_job('job_id')
6、恢复任务
scheduler.resume_job('job_id')
7、移除任务
scheduler.remove_job('job_id')

三、调度方式

1、date

作用:在特定时间运行任务

from datetime import datetime, timedelta

# 在特定时间运行任务
run_date = datetime.now() + timedelta(seconds=10)
scheduler.add_job(job_function, 'date', run_date=run_date)
2、interval 

作用:每隔一段时间运行任务

scheduler.add_job(job_function, 'interval', seconds=5)
3、cron

作用:使用 cron 表达式调度任务 

# 每天的上午10点30分运行任务
scheduler.add_job(job_function, 'cron', hour=10, minute=30)

四、任务管理

# 暂停任务
scheduler.pause_job('job_id')

# 恢复任务
scheduler.resume_job('job_id')

# 移除任务
scheduler.remove_job('job_id')

五、配置调度器

APScheduler 允许通过配置文件或字典来配置调度器的行为。例如,可以配置调度器使用不同的存储后端(如数据库)来持久化任务。

from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler({
    'apscheduler.jobstores.default': {
        'type': 'sqlalchemy',
        'url': 'sqlite:///jobs.sqlite'
    },
    'apscheduler.executors.default': {
        'class': 'apscheduler.executors.pool:ThreadPoolExecutor',
        'max_workers': '20'
    },
    'apscheduler.job_defaults.coalesce': 'false',
    'apscheduler.job_defaults.max_instances': '3',
    'apscheduler.timezone': 'UTC',
})

scheduler.start()

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值