特定时间Golang只运行一次函数

时间:2017-03-24 14:31:33

标签: go cron scheduled-tasks

我需要使用Golang设置特定时间的任务。例如,作业有结束时间,所以我需要更改表格上的一些行。我搜索了它,但我只能找到Cron的定期任务。我不想每隔5分钟设置一个cron来检查数据库。

jasonlvhit 在Golang上为Cron创建了一个名为 gocron 的库,但我不认为它对我的问题有用。

解决:

在@ JimB的评论之后我查了时间库和time.AfterFunc函数的文档可以帮我解决这个问题。在func函数之后需要一个必须为纳秒的持续时间,所以如果你创建像nanoSecondsToSecond()这样的东西

time.AfterFunc(nanoSecondToSecond(10), func() {
    printSometing("Mert")
})

如果定义了printSomething函数,则可以在闭包时调用它。

func printSometing(s string) {
    fmt.Println("Timer " + s)
}

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情。我把它放在它自己的go例程中,这样它就不会阻塞,并且可以在它下面运行加法代码。通常与服务器结合使用

ticker := time.NewTicker(5 * time.Minute)
go func(ticker *time.Ticker) {
  for {
    select {
      case <-ticker.C:
        // do something every 5 minutes as define by the ticker above
      }
    }
}(ticker)