当前位置: 首页 > news >正文

python中定时任务apscheduler库用法详解

1、APScheduler简介

        APScheduler是Python的一个定时任务框架,用于执行周期或者定时任务,该框架不仅可以添加、删除定时任务,还可以将任务存储到数据库中,实现任务的持久化,使用起来非常方便。

        APscheduler全称Advanced Python Scheduler,作用为在指定的时间规则执行指定的作业,其是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

2、APScheduler库安装

首先安装apscheduler库:

pip install apscheduler

3、APScheduler组成

  1. 触发器(trigger):包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了他们自己初始配置以外,触发器完全是无状态的。
  2. 作业存储(job store):存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中。一个作业的数据将在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储。
  3. 执行器(executor):处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。
  4. 调度器(scheduler):其他的组成部分。通常在应用只有一个调度器,应用的开发者通常不会直接处理作业存储、调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业。

3.1 触发器(trigger)

未完待续。。。

示例代码:

from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler


def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)


def task2():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts + '666!')


def func():
    # 创建调度器BlockingScheduler()
    scheduler = BlockingScheduler()
    scheduler.add_job(task, 'interval', seconds=3, id='test_job1')
    # 添加任务,时间间隔为5秒
    scheduler.add_job(task2, 'interval', seconds=5, id='test_job2')
    scheduler.start()


func()

运行结果:

参考博文: Python定时任务框架APScheduler详解_Yunlord的博客-CSDN博客_apscheduler

相关文章:

  • STM32:串口发送+串口接收(内含:查询法+中断法+思路图+代码部分)
  • C语言——经典200道实例(16-20)
  • Python如何快速定位最慢的代码?
  • 【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab代码实现)
  • ESP8266-Arduino网络编程实例-Web服务器(从LittleFS加载页面文件)
  • 【图解CAN总线】-7-Classic CAN 2.0总线网络“负载率”计算(方法二)
  • 3.线性神经网络----动手学深度学习
  • 搭建zabbix4.4.6以及企业微信告警功能实现
  • 文件输入与输出io
  • SpringBoot整合Docker实现一次构建到处运行
  • 程序员眼中的Linux操作系统——初识指令
  • process.env.NODE_ENV与@vue/cli-service及其.env.*默认外部环境配置文件之跨域部署
  • MySQL:用户权限和语言接口
  • 2022年广西壮族自治区中职网络安全技能竞赛“Linux操作系统渗透测试详解”
  • 沉睡者 - 抖音中视频计划横版16:9视频制作教程
  • [数据结构]链表的实现在PHP中
  • Apache Spark Streaming 使用实例
  • CSS魔法堂:Absolute Positioning就这个样
  • es6要点
  • java多线程
  • js中的正则表达式入门
  • Koa2 之文件上传下载
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • 复杂数据处理
  • 浏览器缓存机制分析
  • 前端面试之CSS3新特性
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 微信小程序设置上一页数据
  • 学习笔记:对象,原型和继承(1)
  • ionic异常记录
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $(function(){})与(function($){....})(jQuery)的区别
  • $L^p$ 调和函数恒为零
  • (ibm)Java 语言的 XPath API
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (十一)c52学习之旅-动态数码管
  • (一)认识微服务
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • 。Net下Windows服务程序开发疑惑
  • @Autowired注解的实现原理
  • @JsonFormat与@DateTimeFormat注解的使用
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [ACTF2020 新生赛]Upload 1
  • [Android Pro] AndroidX重构和映射