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


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

相关文章
|
分布式计算 并行计算 数据库
Schedulerx2.0分布式计算原理&最佳实践
1. 前言 Schedulerx2.0的客户端提供分布式执行、多种任务类型、统一日志等框架,用户只要依赖schedulerx-worker这个jar包,通过schedulerx2.0提供的编程模型,简单几行代码就能实现一套高可靠可运维的分布式执行引擎。
24076 2
|
7月前
|
消息中间件 安全 Java
一起来探究@Schedule定时任务在分布式产生的问题
一起来探究@Schedule定时任务在分布式产生的问题
415 0
|
Java API 调度
ThreadPoolTaskScheduler轻量级多线程定时任务框架
面对一些小的功能需求点,如果需要非常灵活的进行处理定时任务处理,但是又因为你的需求需要使用到页面进行定时任务配置,显然使用Spring注解定时任务,无法满足你,这时你想到了xxl-job 或者 quezy等定时任务框架,但是过于繁琐,可能成本较大。那么本文将要解决你的问题
2389 0
|
NoSQL Java 数据处理
【Spring专题】「开发指南」手把手教你将@Schedule任务调度升级为分布式调度@DistributeSchedule
【Spring专题】「开发指南」手把手教你将@Schedule任务调度升级为分布式调度@DistributeSchedule
474 0
【Spring专题】「开发指南」手把手教你将@Schedule任务调度升级为分布式调度@DistributeSchedule
|
资源调度 分布式计算 运维
阿里巴巴任务调度SchedulerX支持一次性任务
阿里巴巴任务调度SchedulerX2.0支持一次性任务
1260 2
|
Java 调度 Spring
【小家Spring】Spring任务调度核心接口(类)之---TaskScheduler(任务调度器)、Trigger(触发器)、ScheduledTask(调度任务)详解(上)
【小家Spring】Spring任务调度核心接口(类)之---TaskScheduler(任务调度器)、Trigger(触发器)、ScheduledTask(调度任务)详解(上)
【小家Spring】Spring任务调度核心接口(类)之---TaskScheduler(任务调度器)、Trigger(触发器)、ScheduledTask(调度任务)详解(上)
|
资源调度 分布式计算 运维
SchedulerX2.0支持一次性任务
SchedulerX2.0支持一次性任务
540 0
|
Java 调度 Spring
【小家Spring】Spring任务调度核心接口(类)之---TaskScheduler(任务调度器)、Trigger(触发器)、ScheduledTask(调度任务)详解(下)
【小家Spring】Spring任务调度核心接口(类)之---TaskScheduler(任务调度器)、Trigger(触发器)、ScheduledTask(调度任务)详解(下)
定时测试BlockingScheduler
定时测试BlockingScheduler
224 0
|
自然语言处理 分布式计算 Java
Schedulerx2.0支持多语言版本的分片模型
1. 简介 任务调度系统可以对多种任务进行调度(定时、编排、重刷历史数据等),有些任务调度系统还提供了分布式任务,帮助用户解决大数据处理的难题。分布式任务主要分为静态分片和动态分片。 1.1 静态分片 主要场景是处理固定的分片数,比如分库分表固定1024张表,需要若干台机器分布式去处理。
3715 0
Schedulerx2.0支持多语言版本的分片模型