python-schedule

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)

你可能感兴趣的:(python-schedule)