schedule-执行周期性任务
模块介绍
该模块主要用于python的任务调度,使用简便友好的python语法定期运行python函数或者一些其他的调用对象,这个模块就类似于windows的任务计划和linux的crontab,都是用于在服务器上周期性执行某段python脚本。
相较于linux的crontab对比:
- schedule模块支持以秒为单位的周期性任务,而crontab只能完成以分钟为单位的。
- schedule模块当有很多个任务需要执行时管理起来很方便,直接内嵌到代码当中,crontab还需要每一个脚本去设置一次,增加了复杂度。
- 轻量级,无需任何依赖
模块安装
pip install schedule
# pip3 安装
pip3 install schedule
国内安装获取软件包可能会很慢,可以采用国内各大加速进行安装
# 清华大学源
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
模块案例
# 载入模块
import schedule
# 创建需要的方法
def job():
print("输出结果")
# 设置执行方法
schedule.every().minutes.do(job)
# 设置循环执行
while True:
schedule.run_pending() # 运行定时任务
time.sleep(1) # 上一次定时任务执行完后间隔1S再执行第二次
代码解释:以上代码是定义了每分钟执行一次job方法,执行完成后中间间隔一秒执行下一次job方法
模块参数用法
schedule模块提供了多种定时方法,比如按秒、按分钟、按小时、按周、按月、按年等等,都可以进行自定义,针对不同的定时任务选用特定的定时方法。
# 每秒执行一次
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一下就可以了
# 载入模块
import schedule
# 创建需要的方法
def job():
print("输出结果")
return schedule.CancelJob # 取消执行任务
# 设置执行方法
schedule.every().minutes.do(job)
# 设置循环执行
while True:
schedule.run_pending() # 运行定时任务
time.sleep(1) # 上一次定时任务执行完后间隔1S再执行第二次
取消指定任务
如果有多个任务想单独某个任务停止执行或者可以设置判断某个情况下停止执行任务
# 载入模块
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再执行第二次
方法传输参数
# 载入模块
import schedule
# 创建需要的方法
def job(name):
print(name)
# 设置执行方法
schedule.every().minutes.do(job, name=job)
# 设置循环执行
while True:
schedule.run_pending() # 运行定时任务
time.sleep(1) # 上一次定时任务执行完后间隔1S再执行第二次
schedule-执行周期性任务的更多相关文章
- python使用sched模块执行周期性任务和定时任务
执行周期性任务 sched模块是一个通用的事件调度程序,可以对任务进行延迟调度,基于此,可以用它来实现周期性任务. # coding:utf8 import time import sched # 初 ...
- java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等
1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Time ...
- ruby执行周期性任务
1.前言 无论是用ruby做系统管理,还是用rails做web开发,都可能遇到周期性任务,它们按照一定时间周期(1小时,2天......)持续地触发.在ruby中,我认为一次性任务使用sid ...
- java关于Timer schedule执行定时任务 !!!!!!!!!
1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Time ...
- python 定时器schedule执行任务
import schedule import time """英文版书籍:<essential sqlalchemy>,这本书讲了很多在每天某个指定的时间点上 ...
- JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理
本文记录: 1,使用ScheduledExecutorService的 scheduleAtFixedRate 方法执行周期性任务的过程,讨论了在任务周期执行过程中出现了异常,会导致周期任务失败. 2 ...
- Linux任务计划、周期性任务执行
Linux任务计划.周期性任务执行 周期性任务执行: cron 守护进程(crond):服务,不间断地运行于后台 # service crond {start|stop|status|restart} ...
- Rails 定时任务——whenever实现周期性任务
根据项目的进展,我们需要实现后台进行定时读取信息的功能,而最关键的实现部分是周期性功能,根据调研,决定使用whenever来实现这一功能. github:https://github.com/java ...
- Python3.6 Schedule模块定时任务
本文使用Python的Schedule模块.Python访问数据库的框架SQLAIchemy 实现了一个:周期性读取mysql 数据的小示例. 一,编程环境 PyCharm2016,Anaconda3 ...
- mysql 定时任务执行
SET GLOBAL event_scheduler = ON; show variables like 'event_scheduler'; event_scheduler ON 创建event: ...
随机推荐
- jax框架的官方编译版本 —— 预编译发行版本(release 列表)
jax框架的Google官方给出的预编译版本,支持CUDA和CUDNN的,带有python版本号,CUDA版本号,CUDNN版本号的: https://storage.googleapis.com/j ...
- 在Vue3中如何为路由Query参数标注类型
前言 最近发布了一款支持IOC容器的Vue3框架:Zova.与以往的OOP或者Class方案不同,Zova在界面交互层面仍然采用Setup语法,仅仅在业务层面引入IOC容器.IOC容器犹如一把钥匙,为 ...
- Digest Auth 摘要认证
1.该代码展示了使用Apache HttpClient库进行HTTP请求,并处理基于MD5的HTTP Digest认证的过程. Digests类实现了MD5加密算法,HttpUtils类处理了GET. ...
- 屏蔽RaiDrive的广告
RaiDrive 广告域名:ads.raidrive.com 在 HOSTS 添加 127.0.0.1 ads.raidrive.com 或者在代理中设置为阻止即可. 效果: 补 最新版(2023.9 ...
- Game on Sum--组合数学--DP
\(Codeforces-Round 767\) (Div. 2) F2. \(Game \ on \ Sum\) \(HERE\) 题意 \(QZS\) 和 \(HANGRY\) 玩游戏. 游戏共有 ...
- P10884 [COCI 2017-2018#2] San
题目传送门:P10884 [COCI 2017-2018#2] San 看下标签 COCI(克罗地亚) 2017 啊 比我小4年的题 --------------------------------- ...
- 实用接地气的 .NET 微服务框架
前言 微服务架构已经成为搭建高效.可扩展系统的关键技术之一,然而,现有许多微服务框架往往过于复杂,使得我们普通开发者难以快速上手并体验到微服务带了的便利.为了解决这一问题,于是作者精心打造了一款最接地 ...
- LaTeX 编译 acmart 文档报错:No country present for an affiliation.
在编译一篇从 arXiv 下载的文档时遇到如下错误: Class acmart Error: No country present for an affiliation. 有两种解决方案: 将错误降级 ...
- C#项目—彩票选号
C#彩票选号软件 今天做了一个彩票选号的小软件,将学到的知识点总结如下(新手小白,多提意见): 1.写程序的思路 实体类(属性.方法) No1. 随机数组集合(属性) No2. 创建集合对象(构造方法 ...
- 8.18域横向smb&wmi明文或hash传递
知识点 windows 2012以上版本默认关闭wdigust,攻击者无法从内存中获取明文密码: Windows2012以下版本如安装KB287199补丁,同样也无法从内存中获取明文密码: 解决方法: ...