容器中apscheduler不执行_APScheduler - 功能强大的定时任务调度库

APScheduler是一个功能强大的Python定时任务库,支持多种触发器、任务存储、执行器和调度方式。本文介绍了其安装、配置和使用示例,展示了如何创建、管理任务,并对比了与其他定时库和框架的区别,强调了其易用性和灵活性。
摘要由CSDN通过智能技术生成

在业务开发中,定时任务总是绕不开的话题。许多时候,crontab和一些轻量级的定时库,功能总是不够强大,无法满足业务场景需求。不妨来看一看 APScheduler,这个强大的Python定时任务库,一定能让你满意。

cd95c942874609bd062bb15bb94a92ba.png

APScheduler库

简介

APScheduler,是 agronholm 在Github上开源的Python定时库,项目位于 https://github.com/agronholm/apscheduler,目前版本为 v3.6.3。APScheduler功能强大,支持单次时间点、固定时间间隔,和cron定期任务这三种方式的定时任务,支持使用内存、数据库和Redis等存储后端进行定时任务的上下文和参数的存储,支持使用包括线程池和进程池等执行方式,支持包括阻塞、后台、AsyncIO等调度方式。APScheduler能够满足几乎所有的定时任务需求。

9a807abedddde3837791ea21e7b16562.png

APScheduler库

安装

APScheduler 可以直接使用 pip 进行安装:

pip install apscheduler

如果需要使用持久化的存储后端,则需要安装对应的库,如SQLAlchemy等。

示例

APScheduler包括以下4种部件:

  • triggers:触发器,包括date、interval和cron三种方式;
  • job stores:任务存储后端,包括内存、SQLAlchemy、MongoDB等;
  • executors:执行器,包括线程池和进程池等;
  • schedulers:调度器,包括阻塞、后台和Gevent等。

我们来看一个使用例子:

from pytz import utcfrom apscheduler.schedulers.background import BackgroundSchedulerfrom apscheduler.jobstores.mongodb import MongoDBJobStorefrom apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStorefrom apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutorjobstores = {    'mongo': MongoDBJobStore(),    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')}executors = {    'default': ThreadPoolExecutor(20),    'processpool': ProcessPoolExecutor(5)}job_defaults = {    'coalesce': False,    'max_instances': 3}scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc)

我们分别进行了jobstores、executors的配置,然后进行了调度器的实例化。

启动调度器,使用start()接口:

scheduler.start()

添加任务,有两种方式,包括:

  • 使用add_job接口
job = scheduler.add_job(myfunc, 'interval', minutes=2)job2 = scheduler.add_job(say_hello, 'date', run_date=tomorrow, args=['hello'])
  • 使用scheduled_job()装饰器装饰任务函数

我们也可以移除任务,使用remove_job()接口和ID进行移除,或对于任务实例调用remove()接口。

我们还可以进行任务的暂停和恢复,分别使用pause()和resume()接口。

13706d6830bf240abb5bf8609c0b0558.png

APScheduler库

总结

APScheduler功能强大,其多样的配置方式使其能够适应不同的应用场景。对比标准库在内的其他轻量级定时库,APScheduler功能丰富,稳定可靠;而对比如Celery等以独立服务方式进行定时调度的框架而言,APScheduler使用简单,部署方便,容易管理。

APScheduler项目目前处于稳定维护状态,项目代码结构清晰,代码质量较高,是一个值得学习的Python工具库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值