Python定时任务APScheduler安装及使用解析


Posted in Python onAugust 07, 2020

1、简介

APScheduler是一个 Python 定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及 crontab 类型的任务,并且可以持久化任务、并以 daemon 方式运行应用。

2、APScheduler四个组件

APScheduler 四个组件分别为:触发器(trigger),作业存储(job store),执行器(executor),调度器(scheduler)。

触发器(trigger)

包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了他们自己初始配置意外,触发器完全是无状态的

APScheduler 有三种内建的 trigger:

  • date: 特定的时间点触发
  • interval: 固定时间间隔触发
  • cron: 在特定时间周期性地触发

作业存储(job store)

存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中。一个作业的数据讲在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储。
APScheduler 默认使用 MemoryJobStore,可以修改使用 DB 存储方案

执行器(executor)

处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。

最常用的 executor 有两种:

  • ProcessPoolExecutor
  • ThreadPoolExecutor

调度器(scheduler)

通常在应用中只有一个调度器,应用的开发者通常不会直接处理作业存储、调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业

2、安装

$ pip install apscheduler

接下来我们看下简单的几个示例:

===============interval: 固定时间间隔触发===============
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime

def job():
  print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 定义BlockingScheduler
sched = BlockingScheduler()
sched.add_job(job, 'interval', seconds=5) 
sched.start()
===============cron: 特定时间周期性地触发===============
import time
from apscheduler.schedulers.blocking import BlockingScheduler

def job(text):
  t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
  print('{} --- {}'.format(text, t))

scheduler = BlockingScheduler()
# 在每天22点,每隔 1分钟 运行一次 job 方法
scheduler.add_job(job, 'cron', hour=17, minute='*/1', args=['job1'])
# 在每天22和23点的25分,运行一次 job 方法
scheduler.add_job(job, 'cron', hour='22-23', minute='25', args=['job2'])

scheduler.start()

通过装饰器scheduled_job()添加方法

import time
from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

@scheduler.scheduled_job('interval', seconds=5)
def job1():
  t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
  print('job1 --- {}'.format(t))

@scheduler.scheduled_job('cron', second='*/7')
def job2():
  t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
  print('job2 --- {}'.format(t))

scheduler.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中定义结构体的方法
Mar 04 Python
python中list循环语句用法实例
Nov 10 Python
Python中字符串的格式化方法小结
May 03 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python使用OpenCV进行标定
May 08 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
如何在django中运行scrapy框架
Apr 22 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
用Python爬虫破解滑动验证码的案例解析
May 06 Python
Python装饰器详细介绍
Mar 25 Python
Python如何解除一个装饰器
Aug 07 #Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 #Python
Python实现上下文管理器的方法
Aug 07 #Python
Python 读取位于包中的数据文件
Aug 07 #Python
Python如何绘制日历图和热力图
Aug 07 #Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 #Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 #Python
You might like
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python线程、进程和协程详解
2016/07/19 Python
python图书管理系统
2020/04/05 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
开放系统互连参考模型
2016/06/29 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
计算机科学与技术应届生求职信
2013/11/07 职场文书
四个太阳教学反思
2014/02/01 职场文书
英文自荐信常用句子
2014/03/26 职场文书
国际贸易求职信
2014/07/05 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
自主招生专家推荐信
2015/03/26 职场文书
植树节新闻稿
2015/07/17 职场文书
小学校长开学致辞
2015/07/29 职场文书
总结Python变量的相关知识
2021/06/28 Python