定时任务模块——APScheduler

一、概念:

  python定时任务框架,基于日期,固定时间间隔,crontab类型的任务,并且可以持久化任务,并能以deamon守护方式运行任务

二、简介:

  安装:pip install apscheduler

  其中7中调度器:

  1. BackgroundScheduler:如果希望调度器在后台执行使用
  2. BlockingScheduler:当调度器是应用唯一要运行的任务时使用
  3. AsyncIOScheduler:使用asyncio模块(一个异步框架)一起使用
  4. GeventScheduler:使用gevent(高新能的python并发框架)作为IO模型,和GeventExecutor配合使用
  5. TornadoScheduler:使用Tornado(一个web框架)的IO模型,用ioloop.add_timeout 完成定时唤醒
  6. TwistedScheduler:
  7. QtScheduler:如果是一个qt应用,需使用QTimer完成定时唤醒

每种调度器中,都有四个组件

触发器(trigger)触发器包含调度逻辑,描述一个任务何时被触发,触发器内置三种方式。

  1. date:基础触发器,特定的时间点触发,只执行一次;
  2. interval:固定时间间隔触发,可以执行多次;

  3. cron:在特定时间周期性的触发,可以执行多次;每次任务执行的间隔时间可以不一样;

任务/作业存储(job store)指定了作业被存放的位置
1.默认情况下保存在内存
2.也可以保存在数据库中,如MySql/MongoDB
3.调度器之间不能共享作业存储

执行器(executor):执行器是将指定的作业(作业函数)提交到线程池,当任务完成时,执行器通知调度器触发相应的事件。
1.ProcessPoolExecutor(默认10个)
2.ThreadPoolExecutor(默认10个)


调度器(scheduler):


三、原理

  触发器(trigger),作业存储(job store),执行器(executor),调度器(scheduler)

  

四、如何使用

五、实例演示

BlockingScheduler

以阻塞进程的形式,每秒执行一次

原文地址:https://www.cnblogs.com/mujun95/p/11785834.html