schedule
$ pip install schedule
Document: Examples — schedule 1.1.0 documentation
简介
Python作业调度。使用友好的语法定期运行 Python 函数(或任何其他可调用函数)。
一个简单易用的API,用于计划作业。
用于定期作业的进程内计划程序。无需额外的流程!
非常轻量级,没有外部依赖关系。
出色的测试覆盖率。
案例
import schedule
import time
def job():
print("I'm working...")#编辑定时任务
schedule.every().seconds#每秒运行一次
schedule.every(2).seconds#每2秒运行一次
schedule.every(1).to(5).seconds#每1-5秒运行一次
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执行一次任务
while True:
schedule.run_pending()#run_pending:运行所有可以运行的任务
time.sleep(1)
取消任务和取消指定任务
取消任务
schedule.clear()
取消指定任务
#需要引入tag
defgreet(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')#取消所有标签为daily-tasks的任务
如何让任务值执行一次
就是在定义任务的时候加个return
使用装饰器计划作业
from schedule import every, repeat, run_pending
import time
@repeat(every(10).minutes)
def job():
print("I am a scheduled job")
while True:
run_pending()
time.sleep(1)
将参数传递给作业
do()将额外的参数传递给工作职能
import schedule
defgreet(name):
print('Hello',name)
schedule.every(2).seconds.do(greet,name='Alice')
schedule.every(4).seconds.do(greet,name='Bob')
fromscheduleimportevery,repeat
@repeat(every().second,"World")
@repeat(every().day,"Mars")
defhello(planet):
print("Hello",planet)
取消作业
若要从计划程序中删除作业,请使用schedule.cancel_job(job)
importschedule
def some_task():
print('Hello world')
job=schedule.every().day.at('22:30').do(some_task)
schedule.cancel_job(job)
运行一次作业
从作业返回以将其从计划程序中删除。schedule.CancelJob
import schedule
import time
defjob_that_executes_once():
# Do some work that only needs to happen once...
returnschedule.CancelJob
schedule.every().day.at('22:30').do(job_that_executes_once)
whileTrue:
schedule.run_pending()
time.sleep(1)