dsutuyxe088689 2017-03-08 09:31
浏览 135

如何清除Gocron工作?

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...
")
    shouldContinue := <-statusChannel
    if !shouldContinue {
        log.Print("received false, breaking...
")
        gocron.Clear()
        break
    }
    gocron.Every(1).Minute().Do(myFunc)
    <-gocron.Start()
    log.Print("working...
")
    }
}

The running gocron job will break, but if my gocron job starts a second time later, it runs my function two times per minute. Where is my mistake?

  • 写回答

1条回答 默认 最新

  • donglou8371 2017-06-25 12:09
    关注

    I just had a simmilar Issue with gocron and I fixed my problem by removing

    <-gocron.Start()
    

    from my for-loop as it will start gocron jobs that were already started again.

    you might try changing your for loop to this:

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

    if that doesn't fix your problem you can also have a look at my post, maybe it helps you :)

    gocron creates multiple instances of task

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题