Python|计划库
Schedule是使用构建器模式进行配置的定期作业的进程内调度程序。 Schedule 允许您使用简单、人性化的语法以预定的时间间隔定期运行Python函数(或任何其他可调用函数)。
计划库用于在每天的特定时间或一周中的特定日期安排任务。我们还可以以 24 小时格式设置任务应该运行的时间。基本上,计划库会将您的系统时间与您设置的计划时间相匹配。一旦计划时间和系统时间匹配,就会调用作业函数(计划的命令函数)。
安装
$ pip install schedule
schedule.Scheduler类
- schedule.every(interval=1) :在默认调度程序实例上调用 every。安排新的定期作业。
- schedule.run_pending() :在默认调度程序实例上调用 run_pending。运行所有计划运行的作业。
- schedule.run_all(delay_seconds=0) :在默认调度程序实例上调用 run_all。运行所有作业,无论它们是否计划运行。
- schedule.idle_seconds() :在默认调度程序实例上调用 idle_seconds。
- schedule.next_run() :在默认调度程序实例上调用 next_run。下一个作业应该运行的日期时间。
- schedule.cancel_job(job) :在默认调度程序实例上调用 cancel_job。删除计划的作业。
schedule.Job(interval, scheduler=None)类
调度程序使用的定期作业。
Parameters:
interval: A quantity of a certain time unit
scheduler: The Scheduler instance that this job will register itself with once it has been fully configured in Job.do().
Schedule.job 的基本方法
- at(time_str) :每天在特定时间安排作业。调用它仅对计划每 N 天运行一次的作业有效。
参数: time_str – XX:YY 格式的字符串。
返回:调用的作业实例 - do(job_func, *args, **kwargs) :指定每次作业运行时应调用的 job_func。作业运行时,任何其他参数都会传递给 job_func。
参数: job_func - 要调度的函数
返回:调用的作业实例 - run() :运行作业并立即重新安排它。
Returns: job_func返回的返回值 - to(latest) :安排作业以不规则(随机)间隔运行。例如,every(A).to(B).seconds 每 N 秒执行一次作业函数,使得 A <= N <= B。
让我们看看实现
Python
# Schedule Library imported
import schedule
import time
# Functions setup
def sudo_placement():
print("Get ready for Sudo Placement at Geeksforgeeks")
def good_luck():
print("Good Luck for Test")
def work():
print("Study and work hard")
def bedtime():
print("It is bed time go rest")
def geeks():
print("Shaurya says Geeksforgeeks")
# Task scheduling
# After every 10mins geeks() is called.
schedule.every(10).minutes.do(geeks)
# After every hour geeks() is called.
schedule.every().hour.do(geeks)
# Every day at 12am or 00:00 time bedtime() is called.
schedule.every().day.at("00:00").do(bedtime)
# After every 5 to 10mins in between run work()
schedule.every(5).to(10).minutes.do(work)
# Every monday good_luck() is called
schedule.every().monday.do(good_luck)
# Every tuesday at 18:00 sudo_placement() is called
schedule.every().tuesday.at("18:00").do(sudo_placement)
# Loop so that the scheduling task
# keeps on running all time.
while True:
# Checks whether a scheduled task
# is pending to run or not
schedule.run_pending()
time.sleep(1)
参考: https://schedule.readthedocs.io/en/stable/