python执行定时任务

朴灿烈づ我的快乐病毒、 2023-06-25 03:11 91阅读 0赞

python执行定时任务,首先如果是在linux系统下,完全没必要使用python的定时任务模块了,因为linux有自带的强大的crontab模块,那么接下来就讲一讲windows下python的定时任务怎么来执行。其实windows系统也有自己的定时任务,详情可见作者的另一篇博客。

一、暴力的定时任务:

简单暴力,直接运用time模块的sleep函数,这个大家比较熟悉,这里不做详细的说明。

  1. from datetime import datetime
  2. import time
  3. '''
  4. 每个 10 秒打印当前时间。
  5. '''
  6. def timedTask():
  7. while True:
  8. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  9. time.sleep(10)
  10. if __name__ == '__main__':
  11. timedTask()

二、运用python线程的Timer模块:

  1. def timedTask():
  2. '''
  3. 第一个参数: 延迟多长时间执行任务(单位: 秒)
  4. 第二个参数: 要执行的任务, 即函数
  5. 第三个参数: 调用函数的参数(tuple)
  6. '''
  7. Timer(10, task, ()).start()
  8. # 定时任务
  9. def task():
  10. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  11. if __name__ == '__main__':
  12. timedTask()

这个模块虽然可以用,但是有一个弊端就是只会执行一次,不会循环往复的无限执行下去

三、第三种方式是使用标准库中sched模块。sched 是事件调度器,它通过 scheduler 类来调度事件,从而达到定时执行任务的效果。

sched库使用起来也是非常简单。
1)首先构造一个sched.scheduler
它接受两个参数:timefuncdelayfunc。timefunc 应该返回一个数字,代表当前时间,delayfunc 函数接受一个参数,用于暂停运行的时间单元。

一般使用默认参数就行,即传入这两个参数 time.timetime.sleep.当然,你也可以自己实现时间暂停的函数。

2)添加调度任务
scheduler 提供了两个添加调度任务的函数:

  • enter(delay, priority, action, argument=(), kwargs={})

该函数可以延迟一定时间执行任务。delay 表示延迟多长时间执行任务,单位是秒。priority为优先级,越小优先级越大。两个任务指定相同的延迟时间,优先级大的任务会向被执行。action 即需要执行的函数,argumentkwargs 分别是函数的位置和关键字参数。

  • scheduler.enterabs(time, priority, action, argument=(), kwargs={})

添加一项任务,但这个任务会在 time 这时刻执行。因此,time 是绝对时间.其他参数用法与 enter() 中的参数用法是一致。

3)把任务运行起来
调用 scheduler.run()函数就完事了。

下面是 sche 使用的简单示例:

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

可以根据自己的情况合适的选择以上的函数执行定时任务

发表评论

表情:
评论列表 (有 0 条评论,91人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PHP定时任务实现执行

       PHP定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没