Python定时执行程序问题(schedule)

 更新时间:2023年04月28日 17:08:28   作者:hxxjxw  
这篇文章主要介绍了Python定时执行程序问题(schedule),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python定时执行程序(schedule)

使用schedule库

import schedule
import time
def job():
    print("I'm working...")
schedule.every(10).seconds.do(job) # 每10秒执行一次
schedule.every().wednesday.at("13:15").do(job) # 每周三13点15执行
schedule.every(10).minutes.do(job) # 每10分钟执行一次
schedule.every().hour.do(job) # 每小时执行一次
schedule.every().day.at("10:30").do(job) # 每天十点半执行
schedule.every(5).to(10).minutes.do(job) # 每5-10分钟随机执行一次
schedule.every().monday.do(job) # 每周一执行
schedule.every().minute.at(":17").do(job) # 每分钟的17秒执行一次
while True:
    schedule.run_pending() # 运行所有可运行的任务

如果是要定在4:30执行,一定要写schedule.every().day.at("04:30").do(job)

而不能只写schedule.every().day.at("4:30").do(job)

注意,如果程序执行的时间要比你设定的时间间隔短,就是下一次定时程序开始执行的时候你上一次程序还没有执行完的话,就会新开进程。

进程堆叠多了就会成灾难

python定时执行任务(schedule)时间延迟踩坑实录

通过schedule设置定时执行某个任务

import schedule
import time
# 定义某个任务
def job():
    ...
# 设置执行时间
schedule.every().seconds.do(job) # 每秒执行一次任务
schedule.every().minutes.do(job) # 每分钟执行一次任务
schedule.every().hour.do(job) # 每小时执行一次任务
# 可以指定具体时间间隔
schedule.every(10).minutes.do(job) # 每10分钟执行一次任务
# 设置每天某一时刻执行
schedule.every().day.at("05:15").do(job) # 每天凌晨5点15分执行任务
# 设置星期几执行
schedule.every().monday.at("05:15").do(job) # 每周一凌晨5点15分执行任务
while True:
    schedule.run_pending() # 运行所有可运行的任务

踩坑问题

第一个注意的点是,你要先在手动运行程序来开启服务(此时程序会暂停),然后才会在指定时间继续执行。

第二个注意的点是,在使用时,因为程序运行时间的存在,会出现时间延迟问题。比如通过代码设置每10分钟跑一次,

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

结果出现

但是即下一次执行时间是从上一次程序运行结束时间+10min来的,而我希望的应该是从上一次程序开始运行+10min,即正确的应该是10:20:21,这样下去会导致时间延迟越来越大。

解决方法

只需要加上一个具体时刻(这里设置的是15s):

schedule.every(10).minutes.at(":15").do(job) # 每10分钟过15s执行程序

也就是说,在10:00:21开启服务,

第一次执行 10:10:15,
第二次执行 10:20:15,
第三次执行 10:30:15,

这样就解决了程序运行时间导致的时间延迟问题。

注意!!! 首次开启服务,一定要在当前时间的15秒之后运行程序,才是正常的。

比如在10:00:08开启服务,下一次会在10:09:15分执行(异常)

比如在10:00:21开启服务,下一次会在10:10:15分执行(正常)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python如何获取Prometheus监控数据

    python如何获取Prometheus监控数据

    这篇文章主要介绍了python如何获取Prometheus监控数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 解决Tensorboard可视化错误:不显示数据 No scalar data was found

    解决Tensorboard可视化错误:不显示数据 No scalar data was found

    今天小编就为大家分享一篇解决Tensorboard可视化错误:不显示数据 No scalar data was found,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 关于python爬虫的原理解析

    关于python爬虫的原理解析

    这篇文章主要介绍了python爬虫原理,今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的同学有所帮助
    2023-07-07
  • 详解python里使用正则表达式的分组命名方式

    详解python里使用正则表达式的分组命名方式

    这篇文章主要介绍了详解python里使用正则表达式的分组命名方式的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • python实现五子棋算法

    python实现五子棋算法

    这篇文章主要为大家详细介绍了python实现五子棋算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python还能这么玩之用Python做个小游戏的外挂

    Python还能这么玩之用Python做个小游戏的外挂

    玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过外挂怎么制作出来的呢?现在来看一下怎么制作一个外挂,首先说下,这里的游戏外挂的概念,和那些大型网游里的外挂可不同,不能自动打怪,主要为了提高一下编程技术,需要的朋友可以参考下
    2021-06-06
  • Python运算符&=使用实例探究

    Python运算符&=使用实例探究

    这篇文章主要为大家介绍了Python运算符&=使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 用Python实现最速下降法求极值的方法

    用Python实现最速下降法求极值的方法

    今天小编就为大家分享一篇用Python实现最速下降法求极值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python Flask 上传文件测试示例

    Python Flask 上传文件测试示例

    这篇文章主要为大家介绍了Python Flask 上传文件测试的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 在Python中使用元类的教程

    在Python中使用元类的教程

    这篇文章主要介绍了在Python中使用元类的教程,是Python当中的基础知识,代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04

最新评论