gron, Cron Jobs in Go.
Gron provides a clear syntax for writing and deploying cron jobs.
$ go get github.com/roylee0704/gronCreate schedule.go
package main
import (
"fmt"
"time"
"github.com/roylee0704/gron"
)
func main() {
c := gron.New()
c.AddFunc(gron.Every(1*time.Hour), func() {
fmt.Println("runs every hour.")
})
c.Start()
}All scheduling is done in the machine's local time zone (as provided by the Go time package).
Setup basic periodic schedule with gron.Every().
gron.Every(1*time.Second)
gron.Every(1*time.Minute)
gron.Every(1*time.Hour)Also support Day, Week by importing gron/xtime:
import "github.com/roylee0704/gron/xtime"
gron.Every(1 * xtime.Day)
gron.Every(1 * xtime.Week)Schedule to run at specific time with .At(hh:mm)
gron.Every(30 * xtime.Day).At("00:00")
gron.Every(1 * xtime.Week).At("23:59")You may define custom job types by implementing gron.Job interface: Run().
For example:
type Reminder struct {
Msg string
}
func (r Reminder) Run() {
fmt.Println(r.Msg)
}After job has defined, instantiate it and schedule to run in Gron.
c := gron.New()
r := Reminder{ "Feed the baby!" }
c.Add(gron.Every(8*time.Hour), r)
c.Start()You may register Funcs to be executed on a given schedule. Gron will run them in their own goroutines, asynchronously.
c := gron.New()
c.AddFunc(gron.Every(1*time.Second), func() {
fmt.Println("runs every second")
})
c.Start()Schedule is the interface that wraps the basic Next method: Next(p time.Duration) time.Time
In gron, the interface value Schedule has the following concrete types:
For more info, checkout schedule.go.
…No open issues yet, or sync has not completed.