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定时任务apschedule_Python定时任务-APScheduler相关推荐

  1. python 4种定时任务(循环+sleep、Timer、sched、APScheduler)

    python 4种定时任务(循环+sleep.Timer.sched.APScheduler) 1.循环 + sleep(s):线程睡眠函数,隔 s 秒运行一次程序,陷入死循环 import date ...

  2. 轻量级定时任务框架:APScheduler

    一.APScheduler简介 APScheduler(Advanced Python Scheduler)是一个轻量级的Python定时任务调度框架(Python库).APScheduler有三个内 ...

  3. python利器怎么编程-Python任务调度利器之APScheduler详解

    任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问 ...

  4. java定时任务_定时任务最简单的3种实现方法(超好用)

    定时任务在实际的开发中特别常见,比如电商平台 30 分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式. TOP 1: ...

  5. PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份

    PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份 参考文章: (1)PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份 (2) ...

  6. 定时任务-动态定时任务(springboot+org.quartz)

    添加依赖 <!-- Quartz定时任务 --><dependency><groupId>org.springframework.boot</groupId& ...

  7. java 客户端定时任务_定时任务最简单的3种实现方法(超实用)

    定时任务在实际的开发中特别常见,比如电商平台 30 分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式. TOP 1: ...

  8. 【Python】简单的apscheduler定时任务

    一开始以为apscheduler是绑定在Flask里面的,并不是,它是独立存在的. 说到定时任务,你会想起 linux 自带的 crontab ,windows 自带的任务计划,都可以实现守时任务.没 ...

  9. asp python 定时任务_python定时任务最强框架APScheduler详细教程

    APScheduler定时任务 上次测试女神听了我的建议,已经做好了要给项目添加定时任务的决定了.但是之前提供的四种方式中,她不知道具体选择哪一个.为了和女神更近一步,我把我入行近10年收藏的干货免费 ...

  10. python 第三方模块之 APScheduler - 定时任务

    介绍 APScheduler的全称是Advanced Python Scheduler.它是一个轻量级的 Python 定时任务调度框架.APScheduler 支持三种调度任务:固定时间间隔,固定时 ...

最新文章

  1. python怎么学最快-零基础怎么样才能学好Python?Python入门必看
  2. 自学python之路(day2)
  3. Android Studio项目结构
  4. codeforces 1041a(水题)
  5. tornado 第一篇
  6. springboot干什么的_Spring Boot 项目的这些文件都是干啥用的?
  7. 接口测试之HTTP协议详解
  8. 2026.静态分析工具pclint
  9. swift 拖动按钮_Swift 简单控件示例:滑块(UISlider)
  10. iPhone的OpenGL ES的资源- 18,你必须知道 !
  11. 【mac】Snagit截图时候鼠标变大太大的解决方法
  12. java实现RSA公私钥PKCS8与PKCS1之间的相互转换(java RSA pkcs8转pkcs1,RSA pkcs1转pkcs8),PKCS8和PKCS1公私钥byte数组还原为java对象
  13. **记录在win10电脑上使用Duet display的一次经历**
  14. gmp新附录 计算机系统,GMP新附录:计算机系统
  15. 夜深人静写算法(二)- 动态规划
  16. 信道容量受哪三个要素_连续信道容量将受到“三要素”的限制,其“三要素”是...
  17. convex hull
  18. 跳转第三方App或网页进行导航
  19. Linux服务器带宽占用高导致无法登录的处理经验分享
  20. FOC——2.RC吸收电路笔记

热门文章

  1. 100+个程序员开发必备参考手册(在线及下载) [复制链接]
  2. Windows驱动之编写键盘记录器
  3. Ros平台下:从零开始学习SLAM(序)
  4. 怎样快速做个 BI 系统
  5. 《一本书读懂24种互联网思维》读书笔记
  6. FishC《零基础学习python》笔记--第002讲:用Python设计第一个游戏
  7. edius多机位多轨编辑
  8. SiteMesh框架统一布局用法介绍
  9. tuxedo客户端调用java_tuxedo调用客户端_tuxedo调用java socket_调用tuxedo
  10. 【昊鼎王五】Windows的Git客户端安装步骤