-
Notifications
You must be signed in to change notification settings - Fork 63
/
main.go
46 lines (35 loc) · 905 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package main
import (
"fmt"
"time"
"github.com/roylee0704/gron"
"github.com/roylee0704/gron/xtime"
)
type printJob struct{ Msg string }
func (p printJob) Run() {
fmt.Println(p.Msg)
}
func main() {
var (
daily = gron.Every(1 * xtime.Day)
weekly = gron.Every(1 * xtime.Week)
monthly = gron.Every(30 * xtime.Day)
yearly = gron.Every(365 * xtime.Day)
purgeTask = func() { fmt.Println("purge unwanted records") }
printFoo = printJob{"Foo"}
printBar = printJob{"Bar"}
)
c := gron.New()
c.AddFunc(gron.Every(1*time.Hour), func() {
fmt.Println("Every 1 hour")
})
c.Start()
c.AddFunc(weekly, func() { fmt.Println("Every week") })
c.Add(daily.At("12:30"), printFoo)
c.Start()
// Jobs may also be added to a running Cron
c.Add(monthly, printBar)
c.AddFunc(yearly, purgeTask)
// Stop the scheduler (does not stop any jobs already running).
defer c.Stop()
}