APScheduler 使用汇总

cronapscheduler 用于设置定时任务;

        触发器(triggers)任务执行的调度逻辑,决定任务如何定时执行;

        任务存储器(job stores)存储了调度任务;

        执行器(executors)执行任务,含有线程池以及进程池的创建和调用等;

        调度器(schedulers)组织调用其他方面;

安装:pip install apscheduler

调度器类型

        BlockingScheduler: 阻塞式,适用于程序是进程中唯一运行的进程,调用 start函数会阻塞当前线程,不能立即返回。

        BackgroundScheduler: 非阻塞式(后台运行),适用于调度程序在应用程序的后台运行,start后主线程不会阻塞。

        AsyncIOScheduler: 当使用asyncio模块时使用

        GeventScheduler: 当使用gevent模块时使用

        TornadoScheduler: 构建Tornado应用时使用

        TwistedScheduler: 构建Twisted应用时使用

        QtScheduler: 构建Qt应用时使用

常用的是非阻塞式的BackgroundScheduler,通常定时任务都会在放到web服务中,如果使用阻塞式,则无法启动web服务。使用非阻塞式,定时任务设定后会继续执行后面的web服务,只要web服务在运行,定时任务就是一直有效的。

触发器类型

        date:在某个时间点执行一次时使用

        interval:固定的时间间隔循环执行时使用


        cron:在特定的时间点执行时使用

        calendarinterval:在特定时间点或以日历为基础的时间间隔内执行时使用

示例

import time
from datetime import date
from datetime import datetime

from apscheduler.schedulers.background import BackgroundScheduler
# @sched.scheduled_job(trigger="interval", args=("张三", 100), seconds=3)
def do_func(name, age):
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
          + " in do func : 姓名:"+name+" 年龄:"+str(age))


def main():
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    sched = BackgroundScheduler()

    # 通过date 设置指定日期执行
    sched.add_job(do_func, trigger="date", run_date=date(2022, 5, 25), args=("张三", 100))

    # 通过datetime,设置指定日期额指定时刻执行
    sched.add_job(do_func, trigger="date", run_date=datetime(2022, 5,  25, 14, 0, 10), args=("张三", 100))

    # 直接使用文本的方式指定日期和时刻表
    sched.add_job(do_func, trigger="date", run_date="2022-05-25 14:0:20", args=("张三", 100))

    # 每3秒执行一次
    sched.add_job(do_func, trigger="interval", args=("张三", 100), seconds=3)
    # 每3分钟执行一次
    sched.add_job(do_func, trigger="interval", args=("张三", 100), minutes=3)
    # 每3小时执行一次
    sched.add_job(do_func, trigger="interval", args=("张三", 100), hours=3)
    # 每3天执行一次
    sched.add_job(do_func, trigger="interval", args=("张三", 100), days=3)
    # 每3周执行一次
    sched.add_job(do_func, trigger="interval", args=("张三", 100), weeks=3)

    # 任务会在6月、7月、8月、11月和12月的第三个周五,00:00、01:00、02:00和03:00触发
    sched.add_job(do_func, trigger="cron", month='6-8,11-12', day='3rd fri', hour='0-3', args=("张三", 100))

    sched.start()


if __name__ == "__main__":
    main()
    while True:
        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
        time.sleep(1)

参考:

APScheduler简介_apscheduler trigger-CSDN博客

Python----使用apscheduler模块设置定时任务_from apscheduler.schedulers.background import back-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/598544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VBA在Excel中注册登录界面的应用

Excel工作表也可以做一个小程序,登录注册后可以访问或修改。为了简便,没有做复杂的控件,能说明问题就行。可以根据需要添加更多的判断条件,控制注册和访问人数。本次操作对注册没有任何限制,只要注册后就可以根据注册的账号和密码进行访问和修改。注册登录界面截图: 操作…

【数据结构】 顺序表专题

目录 1.顺序表的概念及结构 1.1线性表 1.2顺序表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 1.顺序表的概念及结构 1.1线性表 线性表(Linear List)是数据结构中的一种基本结构,它是一个具有n个数据元素的有限序列。线性表的特点是数…

速卖通新卖家测评攻略:从入门到精通

在电商行业中,测评被广泛认为是提升产品转化率和销量的有效手段。对于速卖通的卖家而言,测评的必要性更是显而易见。测评,本质上与国内电商的补单行为相似,是一种通过增加销量来提升产品权重的方法。 特别是在竞争激烈的类目中&a…

Colibri for Mac v2.2.0 原生无损音频播放器 激活版

Colibri支持所有流行的无损和有损音频格式的完美清晰的比特完美播放,仅使用微小的计算能力,并提供干净和直观的用户体验。 Colibri在播放音乐时使用极少的计算能力。该应用程序使用最先进的Swift 3编程语言构建,BASS音频引擎作为机器代码捆绑…

VS code ESP-IDF 提示“loading ‘build.ninja‘: 系统找不到指定的文件” 的解决方案

最近在搞esp32,使用VS code进行开发,但是当把别人的工程直接导进去的时候编译报错找不到文件: 但是在之前明明已经新建工程成功了,那应该是缺少某些文件吧。在网上找到一种方法就是将文件拷贝到之前新建的文件里面,确…

Wish、Newegg、Allegro卖家如何做测评补单 快速提升产品权重与销量

大部分主流平台卖家都会使用测评补单来增加产品权重、提高销量。经常会有一些平台的卖家咨询我其他平台能否像亚马逊一样通过测评补单来提升曝光。 其实大部分跨境电商都是可以通过补单来增加店铺权重提升产品排名。其实亚马逊相对来说风控是最严的,风控点多达几十…

WouoUIPagePC端实现

WouoUIPagePC端实现 WouoUIPage是一个与硬件平台无关,纯C语言的UI库(目前只能应用于128*64的单色OLED屏幕上,后期会改进,支持更多尺寸)。因此,我们可以在PC上实现它,本文就以在PC上使用 VScode…

网络安全之动态路由RIP详解

RIP:路由信息协议 RIP分为三个版本:RIPV1,RIPV2(在IPv4中使用),RIPNG(在IPv6中使用) RIPV1是一种有类别的距离矢量型路由协议(不传递网络掩码)。 RIPV2是一种无类别的距离矢量型路…

Java代码基础算法练习-删除有序数组中的重复项-2024.05.07

任务描述: 给一个有序数组(共10个元素),请在不新建数组的情况下,删除重复出现的元素,使 每个元素只出现一次,最后请输出删除重复元素后数组的新长度和数组元素。 解决思路: 要删除…

javascript中的DOM和BOM

目录 JavaScript中的对象 简介: js对象的基本用法: 创建对象: 访问对象的属性: 设置修改对象的属性: 删除对象的属性: DOM(文档对象模型) 简介: DOM对象的属性…

【毕业设计】基于微信小程序的校园快递平台系统设计与实现

1.项目介绍 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园快递平台系统信息管理难度大,容错率…

性能测试常见风险以及消减措施

性能测试过程中会遇到各种各样的风险,常见风险以及消减措施有哪些? 一: 时间 一)时间相关风险 时间相关风险不仅限于最终用户满意度,尽管这是大多数人首先想到的。时间也是某些与业务和数据相关的风险因素。性能测试可以解决的…

链表+环-链表是否有环的判断

链表是否有环的判断 在数据结构中,链表是一种常见的数据结构,它允许我们在不需要预先知道数据总量的情况下进行数据的动态存储。然而,由于链表的特性,有时我们可能会遇到链表中出现环的情况,即链表的某个节点指向了链…

NXP i.MX8系列平台开发讲解 - 1.1 导读前言

专栏文章目录传送门:返回专栏目录 文章目录 目录 1. 本专辑介绍 2. 学习本专辑作用 3.关于作者 1. 本专辑介绍 本专辑将会介绍Linux 驱动开发,Android BSP 驱动涉及HAL层调试,适用于嵌入式软件开发人员,和有兴趣向该方向发展…

怎么制作地图位置二维码?扫码获取地图信息的方法

随着互联网的不断发展,二维码在工作和生活中的应用不断的增多,可以针对不同的用途展示内容。比如现在很多的商家或者店铺会将定位定制生成二维码,印刷到传单或者宣传海报上,就可以让用户通过扫码获取位置,方便精准定位…

(论文阅读-分析引擎)Modin

一、简介 目标是在不改变的Dataframe语义的情况下支持可扩展的dataframe操作。 什么是机会主义评价?Opportunistic Evaluation? Exploratory data analysis(EDA):总结、理解并从数据集中获取价值的过程。 MPI&#…

如何使用dockerfile文件将项目打包成镜像

要根据Dockerfile文件来打包一个Docker镜像,你需要遵循以下步骤。这里假设你已经安装了Docker环境。 1. 准备Dockerfile 确保你的Dockerfile文件已经准备就绪,并且位于你希望构建上下文的目录中。Dockerfile是一个文本文件,包含了用户可以调…

Omnity 进展月报 | 2024.4.1-4.30

Omnity 大事摘要 1、Octopus 官宣升级为 Omnity。 2、Omnity 4月28号正式上线,实现BTC 和 ICP 之间跨链转账 Runes 资产。 3、为庆祝上线,以符文 HOPE•YOU•GET•RICH 为资产,发红包快速触达大量用户,体验跨链服务。 4、Omni…

layui的treeTable组件,多层级上传按钮失效的问题解决

现象描述: layui的treeTable 的上传按钮在一层能用,展开后其他按钮正常点击,上传按钮无效。 具体原因没有深究,大概率是展开的子菜单没有被渲染treeTable的done管理到,导致没有重绘上传按钮。 解决方案: 不使用layu的上传组件方法…

深入解析:企业级OV SSL证书的技术价值与应用实践

JoySSL官网 注册码230918 在互联网安全日益受到重视的今天,SSL证书已成为保护网站数据传输安全的基石。其中,企业级OV(Organization Validation)SSL证书凭借其增强的安全特性和对企业身份的严格验证,在众多类型的SSL证…
最新文章