Translate

Python | Schedule Library

 

Python | Schedule Library

Schedule is in-process scheduler for periodic jobs that use the builder pattern for configuration. Schedule lets you run Python functions (or any other callable) periodically at pre-determined intervals using a simple, human-friendly syntax.
Schedule Library is used to schedule a task at a particular time every day or a particular day of a week. We can also set time in 24 hours format that when a task should run. Basically, Schedule Library matches your systems time to that of scheduled time set by you. Once the scheduled time and system time matches the job function (command function that is scheduled ) is called.

Installation 

 $ pip install schedule  

schedule.Scheduler class

  • schedule.every(interval=1) : Calls every on the default scheduler instance. Schedule a new periodic job.
  • schedule.run_pending() : Calls run_pending on the default scheduler instance. Run all jobs that are scheduled to run.
  • schedule.run_all(delay_seconds=0) : Calls run_all on the default scheduler instance. Run all jobs regardless if they are scheduled to run or not.
  • schedule.idle_seconds() : Calls idle_seconds on the default scheduler instance.
  • schedule.next_run() : Calls next_run on the default scheduler instance. Datetime when the next job should run.
  • schedule.cancel_job(job) : Calls cancel_job on the default scheduler instance. Delete a scheduled job.

schedule.Job(interval, scheduler=None) class

A periodic job as used by Scheduler.
 

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().

Basic methods for Schedule.job
 

  • at(time_str) : Schedule the job every day at a specific time. Calling this is only valid for jobs scheduled to run every N day(s).
    Parameters: time_str – A string in XX:YY format. 
    Returns: The invoked job instance
  • do(job_func, *args, **kwargs) : Specifies the job_func that should be called every time the job runs. Any additional arguments are passed on to job_func when the job runs.
    Parameters: job_func – The function to be scheduled 
    Returns: The invoked job instance
  • run() : Run the job and immediately reschedule it. 
    Returns: The return value returned by the job_func
  • to(latest) : Schedule the job to run at an irregular (randomized) interval. For example, every(A).to(B).seconds executes the job function every N seconds such that A <= N <= B.

Let’s see the implementation 
 

# 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)
  
Reference: https://schedule.readthedocs.io/en/stable/

Example

$ pip install schedule
 
```
import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)

while True:
    schedule.run_pending()
    time.sleep(1) 
``` 
 


 

Comments

Popular Posts

bot

Popular post