📜  Python|计划库

📅  最后修改于: 2022-05-13 01:55:36.464000             🧑  作者: Mango

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)

调度程序使用的定期作业。

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/