apscheduler任务编排

一、形式一:A任务完成后添加B任务 

from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta# 定义任务A
def task_A():print("任务A开始执行:", datetime.now())# 模拟一些耗时操作# ...print("任务A完成执行:", datetime.now())# 任务A完成后,3秒后触发任务B的执行run_date_plus_one_minute = datetime.now() + timedelta(seconds=3)scheduler.add_job(task_B, 'date', run_date=run_date_plus_one_minute)# 定义任务B
def task_B():print("任务B开始执行:", datetime.now())# 任务B的逻辑# ...print("任务B完成执行:", datetime.now())def task_C():print("任务C开始执行:", datetime.now())# 任务B的逻辑# ...print("任务C完成执行:", datetime.now())if __name__ == '__main__':# 创建后台调度器scheduler = BackgroundScheduler()# 将任务A添加到调度器中scheduler.add_job(task_A, 'interval', seconds=5)  # 假设任务A每5秒执行一次# 启动调度器scheduler.start()# 为了防止脚本退出,这里使用一个无限循环try:while True:passexcept (KeyboardInterrupt, SystemExit):# 关闭调度器scheduler.shutdown()

二、形式二:任务编排

import randomfrom apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta# 定义任务A
def task_A():print("A:", datetime.now())# 任务A完成后,触发任务B的执行scheduler.add_job(random.choice([t for t in tasks if t is not task_A]), 'date',run_date=datetime.now() + timedelta(seconds=1))# 定义任务B
def task_B():print("B:", datetime.now())scheduler.add_job(random.choice([t for t in tasks if t is not task_B]), 'date',run_date=datetime.now() + timedelta(seconds=0.5))# 定义任务C
def task_C():print("C:", datetime.now())scheduler.add_job(random.choice([t for t in tasks if t is not task_C]), 'date',run_date=datetime.now() + timedelta(seconds=0.5))if __name__ == '__main__':tasks = [task_A, task_B, task_C]# 创建后台调度器scheduler = BackgroundScheduler()# 将任务A添加到调度器中scheduler.add_job(task_A, 'interval', seconds=3)  # 假设任务A每10秒执行一次# 启动调度器scheduler.start()# 为了防止脚本退出,这里使用一个无限循环try:while True:passexcept (KeyboardInterrupt, SystemExit):# 关闭调度器scheduler.shutdown()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome Tracing flow event demo

Chrome Tracing flow event demo 1.效果2.解释3.代码 Chrome Tracing flow event demo 1.效果 2.解释 cpu_op 为host上的opkernel 为device上的kernel标记一条线 {"ph": "s", "id": 13, "pid": 1, "tid": 100, "ts&qu…

【Containerd】Containerd接入Harbor仓库

说明 在日常使用容器时,安全方便起见一般都会使用到私有仓库,一般都是采用 harbor 作为私有仓库,docker 对接 harbor 仓库非常简单,那么 containerd 如何对接 harbor 呢? 在内网使用 harbor 根据个人习惯&#xff0c…

【MySQL】触发器

USE stumanbd;/*向t_studentb表中插入一条记录,测试insert触发器“st_insert”是否会被触发。*/ DELIMITER $$ CREATE TRIGGER st_insert AFTER/*BEFORE*/ INSERT/*UPDATE DELETE*/ ON t_students FOR EACH ROW BEGIN SET student"插入记录成功"; END $$ …

解析方法与几何模型

数学建模 解析方法与几何模型 数学建模1.1 向量表示法与几何建模基本案例1.1.1 几何建模的思想1.1.2 向量表示与坐标变换 1.2 Numpy 与线性代数1.2.1 Numpy向量与矩阵的操作1.2.2 利用Numpy进行线性代数基本运算1.2.3 numpy.linalg 的使用 1.1 向量表示法与几何建模基本案例 1…

eNSP中ACL访问控制表的配置和使用

一、拓扑图 1.新建拓扑图 2.PC端配置 PC1: PC2: PC3: 二、基本命令配置 1.S1配置 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 10 [S1-vlan10]vlan 20 [S1-vlan20]vlan 30 [S1-vlan30]quit [S1]interface Vlanif 10 [S1-Vlanif10]ip address 192.168.10…

Gradle学习-2 Groovy

1、Groovy基础语法 1.1、基本数据类型 Groovy支持数据类型&#xff1a;byte, short, int, long, float, double, char &#xff08;1&#xff09;创建一个Android Studio项目 &#xff08;2&#xff09;在根目录新建一个 leon.gradle&#xff0c;输入以下内容 leon.gradle…

Ansible自动化运维,(1)模块

ansible是基于Python语言实现的&#xff0c;模块化&#xff1a;调用特定的模块完成特定的任务&#xff0c;支持自定义模块&#xff0c;可使用任何编程语言写模块(账号&#xff0c;软件等)。部署简单&#xff0c;基于python和SSH&#xff0c;相对安全&#xff0c;基于OpenSSH。 …

高考填报志愿,为何要优先考虑个人兴趣 ?

随着高考成绩纷纷出炉&#xff0c;考生又要面对人生另外一个重要的选择&#xff0c;那便是填报志愿&#xff0c;这关系到自己能否进入满意的学校和专业。如果考生对上述两个方面都不满意&#xff0c;那高考目的就没有达到。既然填报志愿如此重要&#xff0c;考生和家长在选择的…

软件构造 | Design Patterns for Reuse and Maintainability

Design Patterns for Reuse and Maintainability &#xff08;面向可复用性和可维护性的设计模式&#xff09; Open-Closed Principle (OCP) ——对扩展的开放&#xff0c;对修改已有代码的封 Why reusable design patterns A design… …enables flexibility to change …

面向对象设计原则(SOLID原则)C++

面向对象设计原则&#xff08;SOLID原则&#xff09;&#xff0c;每个原则都有其独特的重要性和应用场景。以下是详细解释&#xff0c;并给出简单的示例&#xff1a; 1. 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;&#xff1a; 原则概述&…

Android应用开发从入门到竞赛(1)——开篇

本人从事Android应用开发十余年&#xff0c;指导大学生竞赛十余载&#xff0c;多次指导竞赛任务的Android应用开发&#xff0c;开设本专栏&#xff0c;介绍如何快速入门Android应用开发并将其应用于各类竞赛&#xff0c;同时顺带聊聊比赛感想。&#xff08;部分内容来自本人所编…

树莓派4设置

使用sudo命令时要求输入密码 以 sudo 为前缀的命令以超级用户身份运行。默认情况下&#xff0c;超级用户不需要密码。不过&#xff0c;您可以要求所有以 sudo 运行的命令都输入密码&#xff0c;从而提高 Raspberry Pi 的安全性。 要强制 sudo 要求输入密码&#xff0c;请为你…

Nuxt3 [Vue warn]: Hydration node mismatch:【解决方案】

[Vue warn]: Hydration node mismatch: 水合节点不匹配 Server rendered element contains more child nodes than client vdom. 服务器呈现的元素包含的子节点多于客户端vdom。 这个问题解决起来也很好解决&#xff0c;看这个问题是怎么出来的&#xff0c;看代码&#xff1a;…

DiskLRUCache

DiskLRUCache是Android中实现磁盘缓存相关的组件类&#xff0c;当缓存满时其使用最近最少使用策略来淘汰相关的元素&#xff0c;以控制缓存大小。本文主要基于DiskLRUCache相关源码分析DiskLRUCache的创建、缓存的添加、获取、删除流程。 DiskLRUCache创建 DiskLRUCache不允许…

暗影精灵8Pro声音没有了,这个方法可以解决,亲测有效!

这个OMEN by HP Gaming Laptop 16-k0xxx Windows 10 Sound Driver Mod &#xff0c;真的解决了我的大问题&#xff01; 如果你的暗影精灵8 Pro酷睿版突然变得哑巴了&#xff0c;扬声器和麦克风都发不出声音&#xff0c;那可能是声卡驱动出了问题。 别担心&#xff0c;我也是个…

代码随想录算法训练营DAY46|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 题目链接&#xff1a;121. 买卖股票的最佳时机 class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""if len(prices) 0:return 0dp [[0]*2 for i in range(len(prices))]…

eNSP中三层交换机的配置和使用

一、拓扑图 1.新建拓扑图 2.PC端配置 PC1: PC2&#xff1a; 二、基本命令配置 1.S1配置 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 10 //在交换机 S1 上创建 VLAN 10 [S1-vlan10]vlan 20 // 在交换机 S1 上创建 VLAN 20 [S1-vlan20]quit //退出 VLAN 配置…

舆论中心的《黑神话:悟空》:人们总希望,这只猴子能打破些什么

距离《黑神话&#xff1a;悟空》上线还有60天。外界关于游戏的争议有很多&#xff0c;但游戏科学却很少出来回应什么。 6月9日&#xff0c;博主兲虎发文称&#xff0c;《黑神话&#xff1a;悟空》之所以在发布宣传视频后&#xff0c;一直遭受到所谓性别歧视的攻击与污蔑&#…

短视频营销系统小程序源码

开启全新营销时代 &#x1f3a5;一、引言&#xff1a;短视频营销微信小程序&#xff0c;营销新风尚 在数字化时代&#xff0c;短视频以其直观、生动的特点迅速崛起&#xff0c;成为用户获取信息、娱乐消遣的重要渠道。而短视频营销微信小程序则是将短视频与微信营销完美结合&…

力扣(2024.06.25)

1. 76——最小覆盖子串 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数量必须不…