由于我不是经验丰富的 Go 开发人员,所以我不了解使用 Ticker 的方式。我有以下情况:
一个在特定端口 8080 上运行的 go web 服务,它从另一个应用程序获取数据并处理数据。到目前为止一切顺利,但我在此 Web 服务中有另一个sendData功能,它循环遍历一些文件并将它们发送到另一个外部服务。我试图sendData()每 1 分钟调用一次该函数。下面是没有 Tickers 时 main 函数的样子:
func main() {
http.HandleFunc("/data", headers) //line 1
log.Printf("Ready for data ...%s\n", 8080) //line 2
http.ListenAndServe(":8080", nil) //line 3
}
line 2如果我在无限循环后添加 Ticker 。如果我在之后添加line 3,程序不会调用 Ticker。知道如何处理这个吗?
代码部分
ticker := schedule(sendData, time.Second, done)
time.Sleep(60 * time.Second)
close(done)
ticker.Stop()
和时间表从
func schedule(f func(), interval time.Duration, done <-chan bool) *time.Ticker {
ticker := time.NewTicker(interval)
go func() {
for {
select {
case <-ticker.C:
f()
case <-done:
return
}
}
}()
return ticker
所以基本上我想在每分钟或每小时等时发送数据。有人可以解释 Ticker 的内部工作原理吗?
慕码人8056858
梵蒂冈之花
相关分类