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 相关文章推荐
python3实现暴力穷举博客园密码
Jun 19 Python
Python编程之序列操作实例详解
Jul 22 Python
python遍历文件夹下所有excel文件
Jan 03 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python generator生成器和yield表达式详解
Aug 08 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
Python装饰器结合递归原理解析
Jul 02 Python
浅析Python中字符串的intern机制
Oct 03 Python
如何用Django处理gzip数据流
Jan 29 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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 应用程序安全防范技术研究
2009/09/25 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
web 页面分页打印的实现
2009/06/22 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
js实现密码强度检验
2017/01/15 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python中的is和id用法分析
2015/01/26 Python
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python交易记录整合交易类详解
2019/07/03 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
2014年学习委员工作总结
2014/11/14 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
档案接收函格式
2015/01/30 职场文书
酒桌上的开场白
2015/06/01 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
《秋思》教学反思
2016/02/23 职场文书
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers