Skip to main content

Cron Schedule Triggers ~ A library for determining Quartz Cron schedule trigger dates.

Project description

CronScheduleTriggers: Quartz Syntax based Cron Trigger library.

pipeline status coverage report

Cron Schedule Triggers (CSTriggers) is a Python library enabling the ability to determine the next execution of a live schedule. Its syntax is that of Quartz Job Scheduler. This library is not a scheduling app or a task queue, there are plenty of those in the wild to choose from. When you need advanced customisation of triggers for tasks, and a common and conventional syntax for schedule notation, CSTriggers comes to your aid.

This library is for those who

  • Want the ability to generate future task data for visualization purposes.
  • Want to combine their own choice of solutions to build a customizable integrated task queuing/scheduling system at any scale.
  • Do not want to run java, but want to take advantage of the rich Quartz Cron syntax
  • Do not want to drag in many dependencies into their project (Uses standard Python3 libraries only).

Example usage

Initialize a schedule object with a cron notation string, a start date, and an optional end date. Call .next_trigger() for a new date.

from cstriggers.core.trigger import QuartzCron

schedule_string = "0 0 0 1 JAN-MAR ? 2010-2015"
start_date = "2019-10-13T00:00:00"
end_date = "2022-10-13T00:00:00"
cron_obj = QuartzCron(schedule_string=schedule_string, start_date=start_date, end_date=end_date)

print(cron_obj.next_trigger(isoformat=True))
>> 2020-01-01T00:00:00

For multiple sequential dates call either .next_trigger() multiple times

from cstriggers.core.trigger import QuartzCron

schedule_string = "0 0 0 1 JAN-MAR ? 2010-2030"
start_date = "2019-10-13T00:00:00"
end_date = "2022-10-13T00:00:00"
cron_obj = QuartzCron(schedule_string=schedule_string, start_date=start_date, end_date=end_date)

print(cron_obj.next_trigger(isoformat=True))
print(cron_obj.next_trigger(isoformat=True))
>> 2020-01-01T00:00:00
>> 2020-02-01T00:00:00

Or call .next_triggers() with the number of triggers needed.

from cstriggers.core.trigger import QuartzCron

schedule_string = "0 0 0 1 JAN-MAR ? 2010-2030"
start_date = "2019-10-13T00:00:00"
end_date = "2022-10-13T00:00:00"
cron_obj = QuartzCron(schedule_string=schedule_string, start_date=start_date, end_date=end_date)

print(cron_obj.next_triggers(number_of_triggers=10, isoformat=True))
>> [
        '2020-01-01T00:00:00', 
        '2020-02-01T00:00:00', 
        '2020-03-01T00:00:00', 
        '2021-01-01T00:00:00', 
        '2021-02-01T00:00:00', 
        '2021-03-01T00:00:00', 
        '2022-01-01T00:00:00', 
        '2022-02-01T00:00:00', 
        '2022-03-01T00:00:00', 
        '2023-01-01T00:00:00'
    ]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for cron-schedule-triggers, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size cron_schedule_triggers-0.0.1-py3-none-any.whl (11.9 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size cron-schedule-triggers-0.0.1.tar.gz (10.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page