Search code examples
python-3.6apscheduler

How to use apscheduler to trigger job every minute between specific times?


I'm using python apscheduler module. Is it possible to trigger a job every minute between 7:30 AM and 11:30 PM every day?

I've tried following solution, but I don't know how to add constraint with minutes.

from apscheduler.schedulers.background import BackgroundScheduler


def job_function():
    print("Hello World")

sched = BackgroundScheduler()

sched.add_job(job_function, 'cron', hour='7-23', minute='*')

sched.start()

Solution

  • You can use the new OrTrigger to combine several CronTriggers to cover the whole time span:

    from apscheduler.triggers.combining import OrTrigger
    from apscheduler.triggers.cron import CronTrigger
    
    trigger = OrTrigger([
       CronTrigger(hour='7', minute='30-59'),
       CronTrigger(hour='8-22', minute='*'),
       CronTrigger(hour='23', minute='0-30')
    ])
    
    sched.add_job(job_function, trigger)