schedule-执行周期性任务

模块介绍

该模块主要用于python的任务调度,使用简便友好的python语法定期运行python函数或者一些其他的调用对象,这个模块就类似于windows的任务计划和linux的crontab,都是用于在服务器上周期性执行某段python脚本。

相较于linux的crontab对比:

  1. schedule模块支持以秒为单位的周期性任务,而crontab只能完成以分钟为单位的。
  2. schedule模块当有很多个任务需要执行时管理起来很方便,直接内嵌到代码当中,crontab还需要每一个脚本去设置一次,增加了复杂度。
  3. 轻量级,无需任何依赖

模块安装

python 复制代码
pip install schedule
# pip3 安装
pip3 install schedule

国内安装获取软件包可能会很慢,可以采用国内各大加速进行安装

python 复制代码
# 清华大学源
pip install schedule -i https://pypi.tuna.tsinghua.edu.cn/simple	
# 阿里云源
pip install schedule -i https://mirrors.aliyun.com/pypi/simple
# 豆瓣源
pip instal lschedule -i http://pypi.douban.com/simple

模块案例

python 复制代码
# 载入模块
import schedule 

# 创建需要的方法
def job():
    print("输出结果")

# 设置执行方法
schedule.every().minutes.do(job)

# 设置循环执行
while True:
    schedule.run_pending()	# 运行定时任务
    time.sleep(1)	# 上一次定时任务执行完后间隔1S再执行第二次

代码解释:以上代码是定义了每分钟执行一次job方法,执行完成后中间间隔一秒执行下一次job方法

模块参数用法

schedule模块提供了多种定时方法,比如按秒、按分钟、按小时、按周、按月、按年等等,都可以进行自定义,针对不同的定时任务选用特定的定时方法。

python 复制代码
# 每秒执行一次
schedule.every().seconds.do(job)

# 每30秒执行一次
schedule.every(30).seconds.do(job)

# 每分钟执行一次
schedule.every().minutes.do(job)

# 每30分钟执行一次
schedule.every(30).minutes.do(job)

# 每小时执行一次
schedule.every().hour.do(job)

# 每2小时执行一次
schedule.every(2).hour.do(job)

# 每天执行一次 
schedule.every().day.do(job)

# 每天11点执行一次
schedule.every().day。at("11:00").do(job)

# 每周执行一次
schedule.every().week.do(job)

# 每周三执行一次
schedule.every().wednesday.do(job)

周一到周日用 monday、tuesday、wednesday、thursday、friday、saturday、sunday

单次执行

上面说的都是重复执行的任务,如果想单词执行一次任务的话,可以return一下就可以了

python 复制代码
# 载入模块
import schedule 

# 创建需要的方法
def job():
    print("输出结果")
    return schedule.CancelJob	# 取消执行任务

# 设置执行方法
schedule.every().minutes.do(job)

# 设置循环执行
while True:
    schedule.run_pending()	# 运行定时任务
    time.sleep(1)	# 上一次定时任务执行完后间隔1S再执行第二次

取消指定任务

如果有多个任务想单独某个任务停止执行或者可以设置判断某个情况下停止执行任务

python 复制代码
# 载入模块
import schedule 

# 创建需要的方法
def job():
    print("输出结果")
    return schedule.CancelJob	# 取消执行任务

# 设置执行方法
schedule.every().minutes.do(job).tag(job)	# 设置标签为job
schedule.every(10).minutes.do(job).tag(job10)	# 设置标签为job10
schedule.every(20).minutes.do(job).tag(job20)	# 设置标签为job20

schedule.clear('job')	# 取消标签为job的定时任务
# 设置循环执行
while True:
    schedule.run_pending()	# 运行定时任务
    time.sleep(1)	# 上一次定时任务执行完后间隔1S再执行第二次

方法传输参数

python 复制代码
# 载入模块
import schedule 

# 创建需要的方法
def job(name):
    print(name)

# 设置执行方法
schedule.every().minutes.do(job, name=job)

# 设置循环执行
while True:
    schedule.run_pending()	# 运行定时任务
    time.sleep(1)	# 上一次定时任务执行完后间隔1S再执行第二次
相关推荐
阿豪只会阿巴1 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——项目介绍
javascript·python·django·html
qq_413502023 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
yexuhgu3 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python
AC赳赳老秦3 小时前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
PILIPALAPENG4 小时前
第4周 Day 1:智能体记忆系统——给 Agent 一个"大脑"
前端·人工智能·python
DavidTaozhe4 小时前
一文搞懂外汇接口怎么实时更新美元汇率
大数据·python
用户78937733908534 小时前
Docker 部署踩坑记录:从“构建失败”到“服务跑通”,以及为什么数据被清空了
python·docker
再玩一会儿看代码4 小时前
如何理解神经网络中的权重参数?从一张图看懂模型参数量计算
人工智能·经验分享·python·深度学习·神经网络·机器学习
2301_779622414 小时前
mysql如何通过主从备份实现读写分离_配置mysql架构模式
jvm·数据库·python
m0_741173334 小时前
HTML5中WebSocket在弱网环境下的延迟抖动算法补偿
jvm·数据库·python