Schedule | 轻量化的定时任务模块

简介: Schedule | 轻量化的定时任务模块

背景


定时任务,在我们实际开发中经常会用到,比如 LinuxCorntabDjangoDjango-celeryDjango-corntab 等。但是这些工具和框架总有某些不合适的地方,比如不灵活,笨重等。今天我们就来介绍一款轻量化的定时任务框架 Schedule


关于 Schedule


轻量化,零依赖,简单易上手等都是 Schedule 的优点。


安装


pip install schedule


例子


import schedule,time
def job():
    print("I'm working...")
# 每隔十分钟执行一次
schedule.every(10).minutes.do(job)
# 每隔一小时执行一次
schedule.every().hour.do(job)
# 每天的18:50执行一次
schedule.every().day.at("18:50").do(job)
# 每周一执行一次
schedule.every().monday.do(job)
# 每周天的18:50执行一次
schedule.every().sunday.at("18:50").do(job)
# 每周三的18:50执行一次
schedule.every().wednesday.at("18:50").do(job)
# 每分钟的第44秒执行一次
schedule.every().minute.at(":44").do(job)
n=0
while True:
    schedule.run_pending()
    time.sleep(1)
    n=n+1
    if n>=120:
        break
复制代码


以上就是 schedule 的最基础用法,我都做了注释。按照如上规则,定时任务将会触发 4 次。因为今天周天,小编触发定时任务的时间为 18:49:33,所以周天的 18:50 执行一次,每天的 18:50 执行一次,2 分钟内触发两次 44 秒。所以总共执行 4job


网络异常,图片无法展示
|


实际应用


一个很简单实用的例子,我计划使用定时任务,每两秒获取一下西安当前的气温,方便实时观测。如果你有兴趣,也可以考虑将其可视化。


代码


import schedule,time,requests,json
def job():
    response_res = requests.get('http://api.k780.com/?app=weather.today&weaId=316&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json')
    response_res.raise_for_status
    weather_info = json.loads(response_res.content).get("result")
    citynm=weather_info.get("citynm")
    temperature_curr=weather_info.get("temperature_curr")
    print(f'当前城市:{citynm} 此刻的温度是:{temperature_curr}')
# 每隔2秒执行一次
schedule.every(2).seconds.do(job)
n=0
while True:
    schedule.run_pending()
    time.sleep(1)
    n=n+1
    if n>10:
        break
复制代码


网络异常,图片无法展示
|


我们定时 10 秒,2 秒执行一次,不出意外我们的定时任务获取了 5 次西安的温度,从结果我们了解到当前室外的温度是 31℃,所以还是建议大家在家吹空调。


以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
8月前
|
人工智能 安全 Java
分布式 Multi Agent 安全高可用探索与实践
在人工智能加速发展的今天,AI Agent 正在成为推动“人工智能+”战略落地的核心引擎。无论是技术趋势还是政策导向,都预示着一场深刻的变革正在发生。如果你也在探索 Agent 的应用场景,欢迎关注 AgentScope 项目,或尝试使用阿里云 MSE + Higress + Nacos 构建属于你的 AI 原生应用。一起,走进智能体的新世界。
1560 92
|
关系型数据库 MySQL 数据库
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
1970 0
|
机器学习/深度学习 人工智能 自然语言处理
FunAudioLLM与知名模型对比
FunAudioLLM与知名模型对比
|
存储 人工智能 自然语言处理
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
1973 12
|
安全 搜索推荐 物联网
物联网设备的OTA基本原理
物联网设备的OTA基本原理
2355 1
|
Python
Python中的try-except异常处理语句
Python中的try-except异常处理语句
1200 2
|
存储 NoSQL Linux
《探索 Linux 命令:systemd-coredumpctl》
**《systemd-coredumpctl概览》** `systemd-coredumpctl`, Linux中管理&分析core dump的利器。集中管控systemd生成的转储,详述crash细节。用`--list`查看所有转储,`--info <ID>`深入单一转储。需注意权限、存储管理,配gdb深化分析。精通此命令,加速问题诊断。#LinuxTips #CoreDumpAnalysis
|
移动开发 小程序 视频直播
FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
本文讲述了在使用ZLMediaKit进行视频直播时,遇到移动端通过ExoPlayer和微信小程序播放HLS直播地址失败的问题。错误源于ZLMediaKit对HTTP地址的Cookie校验导致401无权限响应。通过修改ZLMediaKit源码,注释掉相关鉴权代码并重新编译安装,解决了此问题,使得ExoPlayer和小程序能成功播放HLS视频。详细解决方案及FFmpeg集成可参考《FFmpeg开发实战:从零基础到短视频上线》一书。
1218 3
FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题
|
缓存 资源调度 前端开发
Yarn的安装及使用教程
Yarn的安装及使用教程
1383 1