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

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

我们来看看这个库的使用方法

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

pip install schedule

基本用法都是网上摘抄的

import schedule
import time

def job():
    print("I'm working...")
 
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job) 
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)


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

转载注明出处:https://sulao.cn/post/695.html