APScheduler调度框架

1、安装APScheduler

1.1 pip 安装

​ 首选的安装方法是使用pip

$ pip install apscheduler

1.2 源码安装

$ python setup.py install

2、代码示例

​ 源代码分发包含的 examples 目录中可以找到许多以不同方式使用APScheduler的任务示例。

https://github.com/agronholm/apscheduler/tree/master/examples/?at=master

3、基本概念

3.1 触发器:triggers

​ 包含调度的逻辑。每项任务都有自己的触发器,它决定了接下来应该运行的任务。除了最初的配置之外,触发器是完全无状态的。

3.2 作业存储:job stores

​ 安排预定的任务。默认的作业存储只是将任务保存在内存中,但其他存储在各种数据库中。任务数据在保存到持久性任务存储时被序列化,并在从任务存储加载时反序列化。作业存储(不是默认存储)不会将任务数据保存在内存中,而是作为中间人在后端保存,加载,更新和搜索任务。作业存储绝不能在调度程序之间共享。

3.3 执行器:executors

​ 是处理任务运行的东西。他们通常通过将任务中指定的可调用对象提交给线程或进程池来完成此操作。任务完成后,执行程序通知调度程序,然后发出适当的事件。

3.4 调度器:schedulers

​ 将其余的组合在一起。您通常只有一个调度程序在您的应用程序中运行。应用程序开发人员通常不直接处理任务存储,执行程序或触发器。相反,调度程序提供了适当的接口来处理所有这些。配置任务存储和执行程序是通过调度程序完成的,就像添加,修改和删除任务一样。

4、如何选择?

​ 如何选择正确(合适)的调度器,作业存储,执行器和触发器?

​ 调度程序的选择主要取决于编程环境以及使用APScheduler进行的操作。以下是选择调度程序的快速指南:

调度方式   备注
BlockingScheduler   仅可用在当前你的进程之内,与当前的进行共享计算资源
BackgroundScheduler   在后台运行调度,不影响当前的系统计算运行
AsyncIOScheduler   如果当前系统中使用了async module,则需要使用异步的调度器
GeventScheduler   如果使用了gevent,则需要使用该调度
TornadoScheduler   如果使用了Tornado, 则使用当前的调度器
TwistedScheduler   Twister应用的调度器
QtScheduler   Qt的调度器

​ 要选择适当的任务存储,您需要确定是否需要任务持久化。如果您始终在应用程序开始时重新创建任务,则可以使用默认值(MemoryJobStore)。但是,如果您需要自己的任务坚持调度程序重新启动或应用程序崩溃,那么您的选择通常归结为编程环境中使用的工具。但是,如果你在位置自由选择,然后SQLAlchemyJobStorePostgreSQL的后端是推荐的选择,因为它强大的数据完整性保护。

​ 同样,如果您使用上述框架之一,则通常会为您选择执行器。否则, ThreadPoolExecutor对于大多数目的而言,默认值应该足够好。如果您的任务负载涉及CPU密集型操作,则应考虑使用ProcessPoolExecutor多个CPU内核。您甚至可以同时使用这两种方法,将进程池执行程序添加为辅助执行程序。

​ 当您安排任务时,您需要为其选择一个触发器 ,确定任务运行时计算日期/时间的逻辑。

4.1 三种内置触发器

4.1.1 date

  • 在某个特定时间只运行一次时使用

参数 类型 备注
run_date datetime|str the date/time to run the job at
timezone datetime.tzinfo|str time zone for run_date if it doesn’t have one already
  • date 样例

# The job will be executed on November 6th, 2009
sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text'])
​
# The job will be executed on Nove
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值