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. Notice that when an end_date is given, The schedule terminates at 2022-10-13T00:00:00 and not 2030-03-01T00:00:00 as it would naturally.

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))
>> 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'
]

Roadmap

  • Support for last_trigger(s) to retroactively look at schedule dates.
  • Support for AWS Cron Expression syntax.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cron_schedule_triggers_fishy-0.0.11-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file cron_schedule_triggers_fishy-0.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for cron_schedule_triggers_fishy-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 4c3583702fbba8cb35b595c96bc2c00fae079c31a47ecf6dbb123db7452bf660
MD5 36f7345e9a1841d4f088c8c3df4756ee
BLAKE2b-256 53325724ff4521a8a37a47b615fc26009b760ee0f7f57488ad6b514671853553

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page