欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > APScheduler-BackgroundScheduler

APScheduler-BackgroundScheduler

2025/1/16 9:33:42 来源:https://blog.csdn.net/qq_43251445/article/details/140912170  浏览:    关键词: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 BackgroundSchedulerscheduler = 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 BackgroundSchedulerscheduler = 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()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com