问题
做项目的时候经常会有这样的需求,在某个时刻开始执行某个任务,然后每隔一段时间都会执行该任务。
windows下有计划任务,linux下有cron。如果用python可以使用apscheduler库。那么在Golang中应该怎么实现呢?
间隔执行
time包中有个Ticker可以用来实现简单的定时任务。
ticker := time.NewTicker(5 * time.Second)
for _ = range ticker.C {
fmt.Println(time.Now())
}
Ticker会在每隔一段时间执行,比如上面的例子中,每隔5秒打印一下当前时间。
但是,这显然满足不了我们的需求,我们还需要在某个固定时刻才开始。
最终思路
这里提供了一种比较简单的思路。对于固定时刻T,计算T和当前时间的时间差,然后sleep到T,然后用Ticker开始定时任务,每隔时间间隔D执行一次任务。
以何种形式提供固定时刻T以及时间间隔D
time包预定义了一些格式。
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006&#