前言
服务器开发的过程中,经常遇到需要设置定时任务的情况。本文将探讨使用golang的cron包设置定时任务,你将收获cron表达式的使用,cron函数的使用,设置定时任务的场景
一、cron表达式
设定定时任务最重要的一环就是对定时的设置,cron中对定时的设置采取cron表达式
在线cron表达式生成器:https://cron.qqe2.com
cron表达式格式
二、设置定时重复任务
- cron.New(cron.WithSeconds()):根据本地时间创建一个新的cron job runner,并支持秒级设置定时任务
- AddFunc():设置操作函数,按照设置的定时时间进行执行
- Start():启动cron调度程序
- time.NewTimer():设置定时器,在到达特定时间后发出信号
- time.Reset():重设定时器
func timerTest() {
c := cron.New(cron.WithSeconds())
c.AddFunc("* * * * * *", func() {
fmt.Println("do something1")
})
c.AddFunc("* * * * * *", func() {
fmt.Println("do something2")
})
c.Start()
timer := time.NewTimer(time.Second * 5)
// 循环等待
for {
select {
case <-timer.C:
timer.Reset(time.Second * 5)
}
}
}
三、多任务执行
设置定时器,每5s重复执行多个任务文章来源:https://www.toymoban.com/news/detail-684766.html
- select{}:选取一个case来执行后结束,如果没有case执行,将会阻塞主线程
type job1 struct {
}
func (t job1) run() {
fmt.Println(time.Now(), "I am job1")
}
type job2 struct {
}
func (t job2) run() {
fmt.Println(time.Now(), "I am job2")
}
// 多任务执行
func runCron() {
c := cron.New(cron.WithSeconds())
addFunc, err := c.AddFunc("*/5 * * * * *", job1{}.run)
fmt.Println(time.Now(), addFunc, err)
addFunc, err = c.AddFunc("*/5 * * * * *", job2{}.run)
fmt.Println(time.Now(), addFunc, err)
c.Start()
select {}
}
总结
服务器中经常需要一些定时操作的任务,比如:每2小时获取一次token,否则token将会过期的场景。cron专门用于处理定时任务的设置,可以在服务器中尝试使用cron来设置定时任务文章来源地址https://www.toymoban.com/news/detail-684766.html
到了这里,关于golang-定时任务cron的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!