简介
Schedule是一个轻量级的定时任务调度库,可以按照分钟、小时、天、星期几或特定日期来制定定时任务。
安装
通过pip安装Schedule非常简单,只需在命令行终端中输入以下内容:
<code>pip install schedule</code>
定时任务
Schedule的基本用法如下:
<code>import schedule def func(): print("这是一个方法") schedule.every(10).seconds.do(func) # 每10秒运行一次</code>
更多例子如下:
<code>schedule.every(10).minutes.do(job) 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) schedule.every().day.at("12:42", "Europe/Amsterdam").do(job) schedule.every().hour.at(":42").do(job) # 每小时的第42分钟 schedule.every().minute.at(":17").do(job) # 每分钟的第17秒</code>
取消定时任务
<code>import schedule def some_task(): print('Hello world') job = schedule.every().day.at('22:30').do(some_task) schedule.cancel_job(job)</code>
任务只执行一次
<code>import schedule import time def job_that_executes_once(): # 这里写一个只要执行一次的方法 return schedule.CancelJob schedule.every().day.at('22:30').do(job_that_executes_once) while True: schedule.run_pending() time.sleep(1)</code>
获取所有任务和清除所有任务
<code>import schedule def hello(): print('Hello world') schedule.every().second.do(hello) all_jobs = schedule.get_jobs() schedule.clear()</code>
任务过滤
<code>import schedule 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') friends = schedule.get_jobs('friend') schedule.clear('daily-tasks')</code>
时间模糊
<code>def my_job(): print('你好') # 每5到10秒之间执行任务 schedule.every(5).to(10).seconds.do(my_job)</code>
到达指定时间,才开始执行任务
<code>import schedule from datetime import datetime, timedelta, time def job(): print('Boo') # 直到 18:30 才执行 schedule.every(1).hours.until("18:30").do(job) # 直到 2030-01-01 18:33 schedule.every(1).hours.until("2030-01-01 18:33").do(job) # 过8个小时后执行 schedule.every(1).hours.until(timedelta(hours=8)).do(job) # 直到 11:33:42后 schedule.every(1).hours.until(time(11, 33, 42)).do(job) # 到具体时间后执行 schedule.every(1).hours.until(datetime(2020, 5, 17, 11, 36, 20)).do(job)</code>
Schedule库非常强大,结合其他库可以完成各种定时任务。例如,可以结合Win10Toast库来实现通知功能,详情可参考”Win10Toast,一个神奇的Python库”的例子。
© 版权声明
THE END
暂无评论内容