gpt4 book ai didi

go - 如何清除 gocron 作业?

转载 作者:IT王子 更新时间:2023-10-29 02:22:12 25 4
gpt4 key购买 nike

func main() {
statusChannel := make(chan bool)
go checkChannel(statusChannel)
[...]
if x == 1 {
statusChannel <- true
} else {
statusChannel <- false
}


func checkChannel(statusChannel chan bool) {
defer close(statusChannel)
for {
log.Printf("waiting for signal...\n")
shouldContinue := <-statusChannel
if !shouldContinue {
log.Print("received false, breaking...\n")
gocron.Clear()
break
}
gocron.Every(1).Minute().Do(myFunc)
<-gocron.Start()
log.Print("working...\n")
}
}

正在运行的 gocron 作业会中断,但如果我的 gocron 作业稍后再次启动,它会每分钟运行我的函数两次。我的错误在哪里?

最佳答案

我刚刚遇到了 gocron 的类似问题,我通过删除

解决了我的问题
<-gocron.Start()

来 self 的 for 循环,因为它将启动已经再次启动的 gocron 作业。

您可以尝试将 for 循环更改为:

for {
log.Printf("waiting for signal...\n")
shouldContinue := <-statusChannel
if !shouldContinue {
log.Print("received false, breaking...\n")
gocron.Clear()
break
}
gocron.Every(1).Minute().Do(myFunc)
log.Print("working...\n")
}
<-gocron.Start()
}

如果这不能解决你的问题,你也可以看看我的帖子,也许它对你有帮助:)

gocron creates multiple instances of task

关于go - 如何清除 gocron 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com