当前位置:  开发笔记 > 编程语言 > 正文

高朗的CRON工作

如何解决《高朗的CRON工作》经验,为你挑选了1个好方法。

我在CRON PKG中使用 https://github.com/jasonlvhit/gocron/blob/master/gocron.go

import (
    "fmt"
    "time"

    "github.com/claudiu/gocron"
)

func task() {
    fmt.Println("I am runnning task.", time.Now())
}
func vijay() {
    fmt.Println("I am runnning vijay.", time.Now())
}

func main() {
    go test()

    gocron.Start()
    s := gocron.NewScheduler()
    gocron.Every(5).Seconds().Do(task)
    gocron.Every(10).Seconds().Do(vijay)

    <-s.Start()

}
func test() {
    time.Sleep(20 * time.Second)
    gocron.Clear()
    fmt.Println("All task removed")
}

我的问题是删除所有工作后,我的程序仍在执行

我想在删除所有工作后中断执行

请帮帮我,我无法找到方法,我也尝试更改了PKG源代码,但无法找到方法

谢谢你们



1> JimB..:

首先,您要创建一个新的调度程序,然后等待它,但是使用默认的调度程序来运行您的作业。

接下来,您将阻塞该Start()方法返回的通道。关闭该通道以取消阻止接收操作。如果您不立即从中退出,这也会退出cron程序中的主循环main

func main() {
    ch := gocron.Start()
    go test(ch)
    gocron.Every(5).Seconds().Do(task)
    gocron.Every(10).Seconds().Do(vijay)

    <-ch
}
func test(stop chan bool) {
    time.Sleep(20 * time.Second)
    gocron.Clear()
    fmt.Println("All task removed")
    close(stop)
}

实际上与

func main() {
    gocron.Start()
    gocron.Every(5).Seconds().Do(task)
    gocron.Every(10).Seconds().Do(vijay)

    time.Sleep(20 * time.Second)

    gocron.Clear()
    fmt.Println("All task removed")
}

如果您要立即退出,则Clear()先调用然后停止调度程序并不重要,您只需退出程序即可。

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有