Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
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 Allowed Special Characters ============= =========== ================= =========================== Minutes Yes 0-59 \* / , - Hours Yes 0-23 \* / , - Day of month Yes 1-31 \* / , - ? L Month Yes 1-12 or JAN-DEC \* / , - Day of week Yes 0-6 or SUN-SAT \* / , - ? L Year No 1970-2099 \* / , - ============= =========== ================= =========================== 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 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 '?' or '*'. We violate spec here and allow '*' to be an alias for '?', in the case where one of those values is specified (seeing as some platforms don't support '?'). This module also supports the convenient aliases:: @yearly @annually @monthly @weekly @daily @hourly Example full crontab entries and their meanings:: 30 */2 * * * -> 30 minutes past the hour every 2 hours 15,45 23 * * * -> 11:15PM and 11:45PM every day 0 1 ? * SUN -> 1AM every Sunday 0 1 * * SUN -> 1AM every Sunday (same as above) 0 0 1 jan/2 * 2011-2013 -> midnight on January 1, 2011 and the first of every odd month until the end of 2013 24 7 L * * -> 7:24 AM on the last day of every month 24 7 * * L5 -> 7:24 AM on the last friday of every month 24 7 * * Lwed-fri -> 7:24 AM on the last wednesday, thursday, and friday of every month