single |
Copyright 2011-2021 Josiah Carlson
Released under the LGPL license version 2.1 and version 3 (you can choose
which you'd like to be bound under).
Description
===========
This package intends to offer a method of parsing crontab schedule entries
and
determining when an item should next be run. More specifically, it
calculates
a delay in seconds from when the .next() method is called to when the item
should next be executed.
Comparing the below chart to
http://en.wikipedia.org/wiki/Cron#CRON_expression
you will note that W and # symbols are not supported.
============= =========== ================= ==============
===========================
Field Name Mandatory Allowed Values Default Value Allowed Special
Characters
============= =========== ================= ==============
===========================
Seconds No 0-59 0 \* / , -
Minutes Yes 0-59 N/A \* / , -
Hours Yes 0-23 N/A \* / , -
Day of month Yes 1-31 N/A \* / , - ? L
Month Yes 1-12 or JAN-DEC N/A \* / , -
Day of week Yes 0-6 or SUN-SAT N/A \* / , - ? L
Year No 1970-2099 * \* / , -
============= =========== ================= ==============
===========================
If your cron entry has 5 values, minutes-day of week are used, default
seconds
is and default year is appended. If your cron entry has 6 values,
minutes-year
are used, and default seconds are prepended.
As such, only 5-7 value crontab entries are accepted (and mangled to 7
values,
as necessary).
Sample individual crontab fields
================================
Examples of supported entries are as follows::
*
*/5
7/8
3-25/7
3,7,9
0-10,30-40/5
For month or day of week entries, 3 letter abbreviations of the month or
day
can be used to the left of any optional / where a number could be used.
For days of the week::
mon-fri
sun-thu/2
For month::
apr-jul
mar-sep/3
Installation
============
::
pip install crontab
Example uses
============
::
>>> from crontab import CronTab
>>> from datetime import datetime
>>> # define the crontab for 25 minutes past the hour every hour
... entry = CronTab('25 * * * *')
>>> # find the delay from when this was run (around 11:13AM)
... entry.next()
720.81637899999998
>>> # find the delay from when it was last scheduled
... entry.next(datetime(2011, 7, 17, 11, 25))
3600.0
Notes
=====
At most one of 'day of week' or 'day of month' can be a value other than
'?'
|