一、简介

python中的轻量级定时任务调度库:schedule,可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。

库的安装还是最简单的pip install schedule,使用起来也是很容易理解。

二、简单示例

#基本格式
#创建方法
def func():
    print("方法")
    
#创建定时
schedule.every().seconds.do(func)  #每秒运行一次
#如果方法需要传参的话do(func,参数1)


#开循环
while True:
    schedule.run_pending()
    
#如果值运行一次schedule.every().day.do(func).run()
常用时间设置
schedule.every().seconds 每秒运行一次
schedule.every(2).seconds 每2秒运行一次
schedule.every(1).to(5).seconds 每1-5秒运行一次
schedule.every().minutes 每分钟运行一次
schedule.every().hour 每小时运行一次
schedule.every().day 每天运行一次如果后面没有at表示每天当前时间执行一次
schedule.every().day.at("00:00"). 每天凌晨运行一次
schedule.every().week每周凌晨运行一次
schedule.every().wednesday.at("00:00") 每周三凌晨运行一次
#at一些技巧
at(HH:MM:SS)
at("00:00") 凌晨一点
every().hour.at(':30')  每小时30分
every().minute.at(':30') 没分钟30

三、取消任务和取消指定任务

取消任务

schedule.clear()

取消指定任务

#需要引入tap
def greet(name):
    print('Hello {}'.format(name))

schedule.every().day.do(greet, 'Andrea').tag('daily-tasks', 'friend')
schedule.every().hour.do(greet, 'John').tag('hourly-tasks', 'friend')
schedule.every().hour.do(greet, 'Monica').tag('hourly-tasks', 'customer')
schedule.every().day.do(greet, 'Derek').tag('daily-tasks', 'guest')

schedule.clear('daily-tasks') #q取消所有标签为daily-tasks的任务

如何让任务值执行一次? 就是在定义任务的时候加个return

注意事项:
唯一要注意的是,这里面job不应当是死循环类型的,也就是说,这个线程应该有一个执行完毕的出口。一是因为线程万一僵死,会是非常棘手的问题;
二是下一次定时任务还会开启一个新的线程,执行次数多了就会演变成灾难。如果schedule的时间间隔设置得比job执行的时间短,一样会线程堆积形成灾难。

参考资料:

schedule这个库使用起来比较简单,内容不是很多。我这里介绍的大概用法基本上够用了,还想了解其他特性的话,可以参考官网:https://schedule.readthedocs.io/en/stable/

多线程使用:https://www.cnblogs.com/anpengapple/p/8051923.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐