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℃,所以还是建议大家在家吹空调。


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

相关文章
|
机器学习/深度学习 资源调度 Kubernetes
进击的Kubernetes调度系统(三):支持批任务的Binpack Scheduling
阿里云容器服务团队结合多年Kubernetes产品与客户支持经验,对Kube-scheduler进行了大量优化和扩展,逐步使其在不同场景下依然能稳定、高效地调度各种类型的复杂工作负载。 《进击的Kubernetes调度系统》系列文章将把我们的经验、技术思考和实现细节全面地展现给Kubernetes用户和开发者,期望帮助大家更好地了解Kubernetes调度系统的强大能力和未来发展方向。
3908 13
|
4月前
|
缓存 Java 调度
使用scheduleAtFixedRate进行定时任务调度
使用scheduleAtFixedRate进行定时任务调度
|
6月前
|
存储 JavaScript 前端开发
RxJS中的调度器(Scheduler)机制
RxJS中的调度器(Scheduler)机制
177 0
|
6月前
|
数据可视化 Linux 调度
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
747 0
|
6月前
|
消息中间件 安全 Java
一起来探究@Schedule定时任务在分布式产生的问题
一起来探究@Schedule定时任务在分布式产生的问题
393 0
|
11月前
|
缓存 Cloud Native 调度
Fluid支持分层数据缓存本地性调度(Tiered Locality Scheduling)
依赖容器化带来的高效部署、敏捷迭代,以及云计算在资源成本和弹性扩展方面的天然优势,以 Kubernetes 为代表的云原生编排框架吸引着越来越多的 AI 与大数据应用在其上部署和运行。但是数据密集型应用计算框架的设计理念和云原生灵活的应用编排的分歧,导致了数据访问和计算瓶颈。 CNCF开源项目Fluid作为 AI 与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,针对具体的场景(比如大模型),加速计算访问数据。
891 0
|
资源调度 分布式计算 运维
阿里巴巴任务调度SchedulerX支持一次性任务
阿里巴巴任务调度SchedulerX2.0支持一次性任务
1235 2
|
资源调度 分布式计算 运维
SchedulerX2.0支持一次性任务
SchedulerX2.0支持一次性任务
521 0
|
机器学习/深度学习 Kubernetes TensorFlow
进击的Kubernetes调度系统(二):支持批任务的Coscheduling/Gang scheduling
阿里云容器服务团队结合多年Kubernetes产品与客户支持经验,对Kube-scheduler进行了大量优化和扩展,逐步使其在不同场景下依然能稳定、高效地调度各种类型的复杂工作负载。 《进击的Kubernetes调度系统》系列文章将把我们的经验、技术思考和实现细节全面地展现给Kubernetes用户和开发者,期望帮助大家更好地了解Kubernetes调度系统的强大能力和未来发展方向。
6726 0
|
机器学习/深度学习 人工智能 Kubernetes
进击的 Kubernetes 调度系统(二):支持批任务的 Coscheduling/Gang scheduling
阿里云容器服务团队结合多年 Kubernetes 产品与客户支持经验,对 Kube-scheduler 进行了大量优化和扩展,逐步使其在不同场景下依然能稳定、高效地调度各种类型的复杂工作负载。《进击的 Kubernetes 调度系统》系列文章将把我们的经验、技术思考和实现细节全面地展现给 Kubernetes 用户和开发者,期望帮助大家更好地了解 Kubernetes 调度系统的强大能力和未来发展方向。本文为该系列文章的第二篇。
进击的 Kubernetes 调度系统(二):支持批任务的 Coscheduling/Gang scheduling