详细讲解Python中的aioschedule定时任务操作

news2024/10/5 17:28:23

目录

  • 前言
  • 1. 基本概念
  • 2. 基本API
  • 3. Demo

前言

如果下面的函数库无法执行,出现类似:(前提是python3.7以上)

AttributeError: module ‘asyncio‘ has no attribute ‘run‘

请检查run是否可跳转,如果无法跳转,尝试安装asyncio版本号为最新:pip install asuncio==3.4.3

1. 基本概念

aioschedule 是一个基于 asyncio 的 Python 库,用于在异步应用程序中进行任务调度。

它提供了一种方便的方式来安排和执行异步任务,类似于传统的 schedule 库,但适用于异步编程。

先科普下schedule
aioschedule 和 schedule 都是用于任务调度的 Python 库,但它们在异步和同步

编程环境执行方式依赖环境
schedule 适用于同步编程环境schedule 使用阻塞式的方式执行任务schedule 不依赖 asyncio 库
aioschedule 适用于异步编程环境aioschedule 使用非阻塞的异步方式执行任务aioschedule 基于 asyncio

两者的代码相似:

import schedule
import time

def job():
    print("Job executed!")

# 注册每隔5秒执行一次的任务
schedule.every(5).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

另一个:

import asyncio
import aioschedule

async def job():
    print("Job executed!")

# 注册每隔5秒执行一次的任务
aioschedule.every(5).seconds.do(job)

async def main():
    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)

asyncio.run(main())

2. 基本API

aioschedule 提供了一些常用的 API 来实现任务调度。

常用的API如下:

  • every(interval): 用于指定任务执行的时间间隔。
aioschedule.every(5).seconds.do(job)
  • do(job_function, *args, **kwargs): 用于注册要执行的任务函数,可以传递参数给任务函数。
aioschedule.every(10).minutes.do(job, arg1, kwarg1='value')
  • to(target): 用于指定任务执行的终止时间,即任务不再执行的时间点。
aioschedule.every().day.at("14:30").do(job).to("15:00")
  • tag(tag): 为任务添加标签,可以通过标签取消任务。
aioschedule.every().hour.do(job).tag('hourly')
  • cancel(tag): 取消具有指定标签的所有任务。
aioschedule.cancel('hourly')
  • run_pending(): 执行所有待处理的任务。
await aioschedule.run_pending()
  • clear(tag=None): 清除所有任务或特定标签的任务。
aioschedule.clear()
# 或
aioschedule.clear('daily')

3. Demo

示例代码如下:

import asyncio
import aioschedule

async def job():
    print("Job executed!")

# 注册任务,每隔5秒执行一次
aioschedule.every(1).seconds.do(job)

async def main():
    # 异步等待,保持主程序运行
    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)

# 运行主程序
asyncio.run(main())

截图如下:

在这里插入图片描述

另一个Demo:

import asyncio
import aioschedule

async def job(name, count):
    print(f"Job {name} executed {count} times!")

# 注册每隔3秒执行一次的任务,并传递参数
aioschedule.every(3).seconds.do(job, 'TaskA', count=1)

# 注册每隔5秒执行一次的任务,并传递参数
aioschedule.every(5).seconds.do(job, 'TaskB', count=1)

# 注册每小时执行一次的任务,并传递参数
aioschedule.every().hour.do(job, 'TaskC', count=1)

async def main():
    # 异步等待,保持主程序运行
    for i in range(10):
        # 执行所有待处理的任务
        await aioschedule.run_pending()

        # 异步等待1秒,防止事件循环阻塞
        await asyncio.sleep(1)

# 运行主程序
asyncio.run(main())

截图如下:

在这里插入图片描述

实战中的Demo也大同小异:

在这里插入图片描述

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

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

相关文章

【RPC】网络通信:哪种网络IO模型最适合RPC框架?

一、背景 RPC是解决进程间通信的一种方式。一次RPC调用,本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息…

Qt命令行安装:linux(ubuntu)

起因是我上一篇文章说的,官网下的安装包卡死在第一步安装界面了。 于是我就问GPT有没有纯命令行的安装方式,果然是有的。 在Ubuntu上安装Qt可以使用以下命令: 1. 首先,添加Qt的官方存储库到系统中: sudo add-apt-rep…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.1.2 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。 Pandas API参…

使用PyTorch实现混合专家(MoE)模型

Mixtral 8x7B 的推出在开放 AI 领域引发了广泛关注,特别是混合专家(Mixture-of-Experts:MoEs)这一概念被大家所认知。混合专家(MoE)概念是协作智能的象征,体现了“整体大于部分之和”的说法。MoE模型汇集了各种专家模型…

Transformer详解(附代码实现及翻译任务实现)

一:了解背景和动机 阅读Transformer论文: 阅读原始的Transformer论文:“Attention is All You Need”,由Vaswani等人于2017年提出,是Transformer模型的开创性工作。 二:理解基本构建块 注意力机制&#…

软件研发过程中,项目管理工具应该如何选择?

本文作者:极狐GitLab 资深解决方案架构师 尹学峰 许多企业依旧在用老旧的方式,如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求,更无法实现与企业员工的日常即时通信系…

MATLAB - 加载预定义的机器人模型

系列文章目录 前言 一、 要快速访问常见的机器人模型,可使用 loadrobot 功能,该功能可加载市售的机器人模型,如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器…

day02_计算机常识丶第一个程序丶注释丶关键字丶标识符

计算机常识 计算机如何存储数据 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制,是人为定义的带进位的计数方法 实例: // 在java 中 可以使用不同…

蓝桥杯备赛day02 -- 算法训练题 拿金币Java

目录 题目: 问题描述 输入格式 输出格式 解题过程 第一步 定义dp数组 第二步 确定 dp 数组递推公式 第三步 dp数组的初始化 第四步 dp数组的遍历顺序 第五步 举例说明 报错:内存超限 用dp数组去存储位置上的金币 dp数组从二维降为一维 收获&a…

如何在CentOS 7 中搭建Python 3.0 环境

1、下载 通过https://www.python.org/ftp/python/下载Python安装包,这里下载Python-3.10.9.tgz; 2、上传 借助MobaXterm等工具将Python安装包上传至/opt目录; 3、解压 将JDK压缩文件解压至/opt目录:tar -xvf /opt/Python-3.1…

idea设置编辑器背景颜色

文章目录 一、Ided常用工具栏显示二、更改idea主题设置三、设置代码编辑器背景颜色为豆沙绿四、设置新项目 默认Jdk配置、maven配置1、settings for new projects2、structre for new projects 五、修改代码中注释的字体颜色六、设置编辑器字体大小七、文件编码的设置(可以设置…

【网络安全】【密码学】【北京航空航天大学】实验一、数论基础(上)【C语言和Java实现】

实验一、数论基础(上) 一、实验目的 1、通过本次实验,熟悉相关的编程环境,为后续的实验做好铺垫; 2、回顾数论学科中的重要基本算法,并加深对其的理解,为本学期密码学理论及实验课程打下良好…

Python - 深夜数据结构与算法之 DP 串讲

目录 一.引言 二.DP 知识点回顾 1.递归 2.分治 3.动态规划 三.DP 经典题目回顾 1.Climb-Stairs [70] 2.Unique-Paths [62] 3.House-Robber [198] 4.Min-Path-Sum [64] 5.Best-Time-Sell-Stock [121] 6.Min-Cost-Climb [746] 7.Edit-Distance [72] 8.Longest-Sub-…

Android PendingIntent 闪退

先来给大家推荐一个我日常会使用到的图片高清处理在线工具,主要是免费,直接白嫖 。 有时候我看到一张图片感觉很不错,但是图片清晰度不合我意,就想有没有什么工具可以处理让其更清晰, 网上随便搜下就能找到&#xff…

C++设计模式(李建忠)笔记1

C设计模式(李建忠) 本文是学习笔记,如有侵权,请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT:https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 文章目录 C设计模…

编译原理1.1习题 语言处理器

图源:文心一言 编译原理习题整理~🥝🥝 作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡 第1版:自…

目标检测-One Stage-YOLOv7

文章目录 前言一、YOLOv7的不同版本二、YOLOv7的网络结构二、YOLOv7的创新点三、创新点的详细解读ELAN和E-ELANBoF训练技巧计划型重参化卷积辅助训练模块标签分配Lead head guided label assignerCoarse-to-fine lead head guided label assigner 基于级联模型的复合缩放方法 总…

开发知识点-JAVA-springboot

springboot springbootConfiguration注解的底层核心原理Bean注解的底层核心原理 springboot Configuration注解的底层核心原理 https://www.bilibili.com/video/BV1rq4y1E7gK/?spm_id_from333.999.0.0&vd_sourcef21773b7086456ae21a58a6cc59023be spring.io 全家桶 24…

【Emgu CV教程】5.4、几何变换之图像翻转

今天讲解的两个函数,可以实现以下样式的翻转。 水平翻转:将图像沿Y轴(图像最左侧垂直边缘)翻转的操作。原始图像中位于左侧的内容将移动到目标图像的右侧,原始图像中位于右侧的内容将移动到目标图像的左侧。垂直翻转:将图像沿X轴…

智能小程序小部件(Widget)导航、地图、画布等组件,以及开放能力、原生组件说明

智能小程序小部件(Widget)导航、地图、画布等组件,以及开放能力、原生组件说明。 导航组件 navigator 页面链接,控制小程序的跳转。navigator 子节点的背景色应为透明色。 属性说明 属性名类型默认值必填说明urlstring是跳转地址deltanumber1否当 …