定时执行
- 最简单的定时执行
package main
import (
"fmt"
"time"
)
func main() {
go func() {
// 创建一个计时器
timeTickerChan := time.Tick(time.Second * 5)
for {
fmt.Println("123")
<-timeTickerChan
}
}()
fmt.Println(112233)
//一定要阻止主线程退出定时任务才能有效
select {}
}
- cron定时执行
require github.com/robfig/cron/v3 v3.0.1
package main
import (
"fmt"
"github.com/robfig/cron/v3"
"time"
)
func main() {
// 新建一个定时任务对象
// 根据cron表达式进行时间调度,cron可以精确到秒,大部分表达式格式也是从秒开始。
//crontab := cron.New() 默认从分开始进行时间调度
crontab := cron.New(cron.WithSeconds()) //精确到秒
//定义定时器调用的任务函数
task := func() {
fmt.Println("hello world", time.Now())
}
//定时任务
spec := "*/5 * * * * ?" //cron表达式,每五秒一次
// 添加定时任务,
crontab.AddFunc(spec, task)
// 启动定时器
crontab.Start()
// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
// 根据实际情况进行控制
select {} //阻塞主线程停止
}