创建一个定时任务

class MyTimer(threading.Thread):  # 我的定时任务def __init__(self):threading.Thread.__init__(self)def run(self):print("定时任务已启动")scheduler = BlockingScheduler()scheduler.add_job(A,'interval', days=1)scheduler.add_job(B, day=1, args=[10])scheduler.start()

APScheduler 有三种内建的 trigger:

1)date 触发器
date 是最基本的一种调度,作业任务只会执行一次。它表示特定的时间点触发。它的参数如下:

参数 说明
run_date (datetime 或 str) 作业的运行日期或时间
timezone (datetime.tzinfo 或 str) 指定时区

date 触发器使用示例如下:

from datetime import datetime
from datetime import date
from apscheduler.schedulers.background import BackgroundSchedulerdef job_func(text):print(text)scheduler = BackgroundScheduler()
# 在 2017-12-13 时刻运行一次 job_func 方法
scheduler .add_job(job_func, 'date', run_date=date(2017, 12, 13), args=['text'])
# 在 2017-12-13 14:00:00 时刻运行一次 job_func 方法
scheduler .add_job(job_func, 'date', run_date=datetime(2017, 12, 13, 14, 0, 0), args=['text'])
# 在 2017-12-13 14:00:01 时刻运行一次 job_func 方法
scheduler .add_job(job_func, 'date', run_date='2017-12-13 14:00:01', args=['text'])scheduler.start()

2)interval 触发器
固定时间间隔触发。interval 间隔调度,参数如下:

参数 说明
weeks (int) 间隔几周
days (int) 间隔几天
hours (int) 间隔几小时
minutes (int) 间隔几分钟
seconds (int) 间隔多少秒
start_date (datetime 或 str) 开始日期
end_date (datetime 或 str) 结束日期
timezone (datetime.tzinfo 或str) 时区

interval 触发器使用示例如下:

import datetime
from apscheduler.schedulers.background import BackgroundSchedulerdef job_func(text):print(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])scheduler = BackgroundScheduler()
# 每隔两分钟执行一次 job_func 方法
scheduler .add_job(job_func, 'interval', minutes=2)
# 在 2017-12-13 14:00:01 ~ 2017-12-13 14:00:10 之间, 每隔两分钟执行一次 job_func 方法
scheduler .add_job(job_func, 'interval', minutes=2, start_date='2017-12-13 14:00:01' , end_date='2017-12-13 14:00:10')scheduler.start()

3)cron 触发器
在特定时间周期性地触发,和Linux crontab格式兼容。它是功能最强大的触发器。
我们先了解 cron 参数:

参数 说明
year (int 或 str) 年,4位数字
month (int 或 str) 月 (范围1-12)
day (int 或 str) 日 (范围1-31
week (int 或 str) 周 (范围1-53)
day_of_week (int 或 str) 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
hour (int 或 str) 时 (范围0-23)
minute (int 或 str) 分 (范围0-59)
second (int 或 str) 秒 (范围0-59)
start_date (datetime 或 str) 最早开始日期(包含)
end_date (datetime 或 str) 最晚结束时间(包含)
timezone (datetime.tzinfo 或str) 指定时区

这些参数是支持算数表达式,取值格式有如下:

cron 触发器使用示例如下:

import datetime
from apscheduler.schedulers.background import BackgroundSchedulerdef job_func(text):print("当前时间:", datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])scheduler = BackgroundScheduler()
# 在每年 1-3、7-9 月份中的每个星期一、二中的 00:00, 01:00, 02:00 和 03:00 执行 job_func 任务
scheduler .add_job(job_func, 'cron', month='1-3,7-9',day='0, tue', hour='0-3')scheduler.start()

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

import time
from apscheduler.schedulers.blocking import BlockingSchedulerscheduler = 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()'''
运行结果:
job2 --- 2019-08-29 22:36:35
job1 --- 2019-08-29 22:36:37
job2 --- 2019-08-29 22:36:42
job1 --- 2019-08-29 22:36:42
job1 --- 2019-08-29 22:36:47
job2 --- 2019-08-29 22:36:49
...余下省略...
'''

参考文章:https://blog.csdn.net/xc_zhou/article/details/80952147

scheduler定时任务的基础使用相关推荐

  1. 【定时任务】- 基础篇

    [定时任务]- 基础编 一.什么是定时任务 二.为什么要用定时任务 三.怎么使用定时任务 四.cron表达式 五.异步多线程使用定时任务 一.什么是定时任务 定时任务,简要说明就是在指定时间内触发执行 ...

  2. java 获取scheduler_Spring Scheduler定时任务 + Quartz

    定时任务几种实现方式 Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务,没怎么用过就不说了. Spring3.0以后自带的task,可以将 ...

  3. linux定时任务Crond基础概念原理介绍01

    说明:本文来自老男孩linux运维实战培训-就业课程视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto.com/2561410/1120636 1)视频实战 ...

  4. quartz mysql索引_分布式系统中的定时任务全解(二)

    在实际项目中,通常需要用到定时任务(定时作业),spring框架提供了很好的实现. 1.  下载spring-quartz插件包 这里默认当前系统中是集成了spring框架的基本功能的.去网上下载sp ...

  5. 8-12 三个定时任务

    为了保证redis-sentinel对redis 节点做失败判定,以及做故障转移,redis有3个定时任务作为基础实现上述过程. redis-sentinel.conf配置了sentinel moni ...

  6. Java如何实现定时任务?

    看完这篇文章你会了解到什么是定时任务,以及为什么austin项目要引入分布式定时任务框架,可以把代码下载下来看到我是怎么使用xxl-job的. 01.如何简单实现定时功能? 我是看视频入门Java的, ...

  7. SpringBoot与Shedule定时任务

    一.问题描述 1.   springBoot中的@Schedule注解定时任务,在某些情况下并没有生效,定时任务不再执行,进而导致业务出现问题. 二.分析定位 1.  首先查看百度有没有相关的问题,查 ...

  8. 对英雄联盟比赛预测(三)- 数据获取Java实现

    系列文章目录 对英雄联盟比赛预测(一)- 特征分析 对英雄联盟比赛预测(二)- 数据获取api分析 对英雄联盟比赛预测(三)- 数据获取Java实现 文章目录 系列文章目录 声明 前言 一.基本框架 ...

  9. Apscheduler结合flask进行动态任务管理

    1. 简介与安装 ​ Apscheduler是一个轻量级的 Python 定时任务调度框架.APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab ...

最新文章

  1. 首款微控制器级树莓派 Pico,超廉价只需4美元
  2. Android项目框架综合实例
  3. linux安装emc的多路径软件,linux (centos)安装EMCPower多路径软件
  4. gmod的css模块放哪里,webpack打包css报错找不到模块?
  5. HDU - 1528 Card Game Cheater(二分图最大匹配)
  6. chrome关闭自动更新 mac
  7. vue 如何处理两个组件异步问题_Vue异步组件使用详解
  8. 计网实验三 虚拟局域网 VLAN
  9. 北京邮电计算机课程表,北邮通信工程本科专业课程表
  10. 华为谷歌安装器 Android6.0,gms安装器华为
  11. H5 - 手机 APP 接入支付宝、微信、银联支付流程汇总
  12. html中font的作用,css中font-style有什么用?
  13. 电脑桌面的word文件丢失了怎么找回?7个解决方法!
  14. DS二叉树--层次遍历
  15. android 模拟器监听短信,android模拟器用命令和DDMS模拟来电和短信
  16. 【机器学习线性代数】10 相似对角矩阵:漂亮的最简形式
  17. 如何将视频中的音频提取出来?
  18. POJ1163 The Triangle
  19. XSS 和 CSRF 详解
  20. 微信开发者工具git 删除项目

热门文章

  1. thinkjs能在浏览器html文件,think
  2. TF卡实际容量为什么比标注容量小
  3. 前SKT当家ADC选手Bang陷入低谷,遭嫌弃被放逐到北美次级联赛
  4. 获取System.Drawing.SystemColors类下的所有颜色
  5. 《杨澜访谈录》逐风者第三季 |数字技术把教育引向未来
  6. 关于七巧板中某些需要提一嘴的技术实现
  7. Win32 OpenGL编程系列 2D例子 -- 七巧板图形绘制
  8. 工商银行服务态度极其恶劣!!
  9. 《Orleans 构建高性能分布式Actor服务》读书笔记
  10. 图神经网络也能用作CV骨干模型,华为诺亚ViG架构媲美CNN、Transformer