|
|
13 anos atrás | |
|---|---|---|
| .gitignore | 13 anos atrás | |
| README.md | 13 anos atrás | |
| cron.go | 13 anos atrás | |
| cron_test.go | 13 anos atrás | |
| parser.go | 13 anos atrás | |
| parser_test.go | 13 anos atrás | |
| schedule.go | 13 anos atrás | |
| schedule_test.go | 13 anos atrás |
A cron library for Go.
Callers may register Funcs to be invoked on a given schedule. Cron will run them in their own goroutines.
c := new(Cron)
c.Add("0 5 * * * *", func() { fmt.Println("Every 5 minutes") })
c.Add("@hourly", func() { fmt.Println("Every hour") })
go c.Run() // Scheduler blocks until stopped, so run it in its own goroutine.
..
// Funcs are invoked in their own goroutine, asynchronously.
..
c.Stop() // Stop the scheduler (does not stop any jobs already running).
This section describes the specific format accepted by this cron. Some snippets are taken from the wikipedia article.
A cron expression represents a set of times, using 6 space-separated fields.
| Field name | Mandatory? | Allowed values | Allowed special characters |
|---|---|---|---|
| Seconds | Yes | 0-59 | * / , - |
| Minutes | Yes | 0-59 | * / , - |
| Hours | Yes | 0-23 | * / , - |
| Day of month | Yes | 1-31 | * / , - ? |
| Month | Yes | 1-12 or JAN-DEC | * / , - |
| Day of week | Yes | 0-6 or SUN-SAT | * / , - ? |
Note: Month and Day-of-week field values are case insensitive. "SUN", "Sun", and "sun" are equally accepted.
The asterisk indicates that the cron expression will match for all values of the field; e.g., using an asterisk in the 5th field (month) would indicate every month.
Slashes are used to describe increments of ranges. For example 3-59/15 in the 1st field (minutes) would indicate the 3rd minute of the hour and every 15 minutes thereafter. The form "*/..." is equivalent to the form "first-last/...", that is, an increment over the largest possible range of the field. The form "N/..." is accepted as meaning "N-MAX/...", that is, starting at N, use the increment until the end of that specific range. It does not wrap around.
Commas are used to separate items of a list. For example, using "MON,WED,FRI" in the 5th field (day of week) would mean Mondays, Wednesdays and Fridays.
Hyphens are used to define ranges. For example, 9-17 would indicate every hour between 9am and 5pm inclusive.
Question mark may be used instead of '*' for leaving either day-of-month or day-of-week blank.
You may use one of several pre-defined schedules in place of a cron expression.
| Entry | Description | Equivalent To |
|---|---|---|
| @yearly (or @annually) | Run once a year, midnight, Jan. 1st | 0 0 0 1 1 * |
| @monthly | Run once a month, midnight, first of month | 0 0 0 1 * * |
| @weekly | Run once a week, midnight on Sunday | 0 0 0 * * 0 |
| @daily (or @midnight) | Run once a day, midnight | 0 0 0 * * * |
| @hourly | Run once an hour, beginning of hour | 0 0 * * * * |
All interpretation and scheduling is done in the machine's local time zone (as provided by the Go time package).
Be aware that jobs scheduled during daylight-savings transitions will not be run!