golang执行定时脚本

第一次拿golang写业务的代码,其中需要使用定时脚本
注:「用的beego开发」

如何执行定时脚本

注:「项目名称为api,在api/tasks/first_task.go文件写入如下代码」

使用toolbox的task及robfig/cron进行定时任务编写

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
package tasks
import (
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/toolbox"
"github.com/robfig/cron"
"log"
"time"
)
func init() {
//beego/toolbox/task实现
first_task := toolbox.NewTask("first_task", "* * * * * *", func() error {
log.Printf("\nNotification task ran at: %s\n", time.Now())
fmt.Print(time.Now())
return nil
})
err := first_task.Run()
if err != nil {
beego.Error(err)
}
toolbox.AddTask("first_task", first_task)
toolbox.StartTask()
defer toolbox.StopTask()
//robfig/cron实现
i := 0
c := cron.New()
spec := "* * * * * *"
c.AddFunc(spec, func() {
i++
log.Println("start", i)
})
c.Start()
select{} //阻塞主线程不退出
}

在main.go引入tasks

1
2
3
4
5
6
7
8
9
10
11
package main
import (
_ "api/routers"
"github.com/astaxie/beego"
_ "api/tasks"
)
func main() {
beego.Run()
}

坚持原创技术分享,您的支持将鼓励我继续创作!