编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Go实现cron计划任务(crontab计划任务)

wxchong 2024-07-19 06:07:26 开源技术 15 ℃ 0 评论


简介

在跑任务程序的时候,我们希望在某个时间点执行某些操作,这时候就可以使用cron快速实现。



Go实现

在Go开源项目中有好几个都有实现cron的功能,例如:

github.com/robfig/cron

这个项目下有支持秒级别的cron任务,最新版本反而不支持,需要注意,目前最新版本是v3,如果不指定版本号,默认是使用v1的版本



v1版本

这个版本最低是分秒级别

package main
?
import (
    "fmt"
    "time"
?
    "github.com/robfig/cron"
)
?
func main() {
    fmt.Println("starting....")
    c := cron.New()
    err := c.AddFunc("*/5 * * * * *", func() {
        fmt.Println(time.Now(), "opcai")
    })
    if err != nil {
        panic(err)
    }
    err = c.AddFunc("*/5 * * * * *", func() {
        fmt.Println(time.Now(), "linux")
    })
    if err != nil {
        panic(err)
    }
    c.Start()
    select {}
}
?


v3版本

这个版本最低是分钟级别

package main
?
import (
    "fmt"
    "time"
?
    cron "github.com/robfig/cron/v3"
)
?
func main() {
    fmt.Println("starting....")
    c := cron.New()
    _, err := c.AddFunc("* * * * *", func() {
        fmt.Println(time.Now(), "opcai")
    })
    if err != nil {
        panic(err)
    }
    _, err = c.AddFunc("* * * * *", func() {
        fmt.Println(time.Now(), "linux")
    })
    if err != nil {
        panic(err)
    }
    c.Start()
    select {}
}
?

总结

一般分钟级别的就够用了,需要精确时间的任务,可以使用秒级别的。


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表