0%

Golang定时任务框架--go-co-op/gocron

介绍

goCron is a Golang job scheduling package which lets you run Go functions periodically at pre-determined interval using a simple, human-friendly syntax.


使用

安装

1
go get github.com/go-co-op/gocron

示例

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main

import (
"github.com/go-co-op/gocron"
"log"
"time"
)

func main() {
// 初始化
s := gocron.NewScheduler(time.Local) // 使用系统的本地时区
//s:=gocron.NewScheduler(time.UTC) // 使用UTC时区
log.Println("start")

// 示例一:每2秒钟执行一次
s.Every(2).Seconds().Do(func() {
log.Println("执行了。。。。2s")
})

// 示例二:WaitForSchedule() 的使用
// 默认情况下会立即执行一次,使用 WaitForSchedule() 可禁止这种情况,等到下次才执行
s.Every(5).Seconds().Do(func() {
log.Println("啦啦啦111")
})
s.Every(5).Seconds().WaitForSchedule().Do(func() {
log.Println("啦啦啦222")
})

// 示例三:通过 crontab表达式来执行
// 标准的crontab格式,最小单位是分
s.Cron("*/1 * * * *").Do(task)
// 最小单位是秒的crontab表达式
s.CronWithSeconds("*/1 * * * * *").Do(task)

// 示例四:指定时间运行
s.Every(1).Sunday().At("00:30").Do(task)
s.Every(1).Day().At("10:00").Do(task)

// 示例五:SingletonMode() 单例模式
// 如果之前的任务尚未完成,单例模式将阻止新任务启动
s.Every("2").Seconds().SingletonMode().Do(task)

// 示例六:带有参数的任务
s.Every(1).Seconds().Do(taskWithParams, 2, "test")

// 异步启动
s.StartAsync()

// 同步启动,阻塞进程
s.StartBlocking()

}

func task() {
log.Println("hello")
}

func taskWithParams(a int, b string) {
log.Println(a, b)
}
如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc