python使用轻量级定时任务调度库schedule实现定时任务

  • 2019-07-16 21:14:03
  • 开发
  • 1008
  • shevechco

我们通常在linux环境下想定时触发一个操作或者执行脚本之类的第一个想到的肯定就是使用cron计划任务,但是有时我们想把这些操作都集成到系统中,而不想单独再去启一个脚本来执行,这时schedule就派上用场了,当然我们还可以使用异步库celery来实现这个,当然只是一个简单的动作使用这个库的话我们就需要写很多的代码了

首先我们需要进行安装这个库

pip install schedule

下面是其基本用法

import schedule
import time

def job():
    print("I'm working...")
 
schedule.every(10).minutes.do(job) #每10分钟执行一次
schedule.every().hour.do(job) #每小时执行一次
schedule.every().day.at("10:30").do(job) #每天10:30分执行
schedule.every().monday.do(job) #每周一执行
schedule.every().wednesday.at("13:15").do(job) #每周三 13:15分执行
schedule.every(1).month.do(job) #每月1号执行 while True: schedule.run_pending() time.sleep(1)

其实也就是开了一个无限循环然后使用schedule库中的run_pending方法执行上面设置的一些个定时任务

再个就是解决延迟的问题,使用多线程来解决,也是网上摘抄的例子,我们来看看吧

import datetime
import schedule
import threading
import time

def job1():
    print("I'm working for job1")
    time.sleep(2)
    print("job1:", datetime.datetime.now())

def job2():
    print("I'm working for job2")
    time.sleep(2)
    print("job2:", datetime.datetime.now())

def job1_task():
    threading.Thread(target=job1).start()

def job2_task():
    threading.Thread(target=job2).start()

def run():
    schedule.every(10).seconds.do(job1_task)
    schedule.every(10).seconds.do(job2_task)

while True:
    schedule.run_pending()
    time.sleep(1)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.sulao.cn/post/692

相关推荐