当前位置: 首页 > 面试题库 >

gocron创建任务的多个实例

巫马劲
2023-03-14
问题内容

我在使用此软件包的脚本中遇到问题:

    "github.com/jasonlvhit/gocron"

我找不到错误后写了这个小小的testscript,结果是执行cronjobs的次数是预期的两倍:

func main() {
    for i := 0; i < 3; i++ {
        channel := make(chan string)
        go taskCron(channel, i)
    }

    time.Sleep(time.Second * 5)
    gocron.Clear()
    fmt.Println("stop this shit")
}

func task(i int) {
    fmt.Println("still running...", i)
}

func taskCron(channel chan string, i int) {
    gocron.Every(4).Seconds().Do(task, i)
    <-gocron.Start()
}

运行它给我这个输出:

——▶go run *.go
still running... 0
still running... 0
still running... 1
still running... 1
still running... 2
still running... 2
still running... 0
still running... 1
still running... 2
stop this

有谁知道我如何能在不重复的情况下创建大量的Gocron作业?

谢谢 :)


问题答案:

还可以吧

<-gocron.Start()

将开始已经重新开始的作业,因此要解决我的问题,我不得不将脚本更改为此:

func main() {
    for i := 0; i < 3; i++ {
        taskCron(i)
    }
    channel2 := make(chan int)
    go startCron(channel2)

    time.Sleep(time.Second * 5)
    gocron.Clear()
    fmt.Println("stop this")
}

func task(i int) {
    fmt.Println("still running...", i)
}

func taskCron(i int) {
    gocron.Every(4).Seconds().Do(task, i)
}

func startCron(channel chan int) {
    <-gocron.Start()
}

我希望这对遇到相同问题的任何人有所帮助!



 类似资料:
  • 我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?

  • 每个 gulp 任务(task)都是一个异步的 JavaScript 函数,此函数是一个可以接收 callback 作为参数的函数,或者是一个返回 stream、promise、event emitter、child process 或 observable (后面会详细讲解) 类型值的函数。由于某些平台的限制而不支持异步任务,因此 gulp 还提供了一个漂亮 替代品。 导出任务 任务(tasks

  • gocron - 定时任务管理系统 项目简介 使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 查看文档 原有的延时任务拆分为独立项目延迟队列 功能特性 Web界面管理定时任务 crontab时间表达式, 精确到秒 任务执行失败可重试 任务执行超时, 强制结束 任务依赖配置, A任务完成后再执行B任务 账户权限控制 任务类型 shell任务 在任务节点上执行

  • 在本章中,让我们学习如何creating tasks 。 每当您运行Grunt时,都会指定一个或多个任务运行,以通知Grunt您希望它执行的操作。 如果指定default task ,则默认情况下将运行。 别名任务 每当指定任务列表时,新任务可以为一个或多个其他任务设置别名。 运行别名将依次运行taskList中的每个指定任务。 taskList参数应该是一个任务数组,如下所示 - grunt.r

  • 创建任务 登录后台,左侧导航中点击“添加任务” 添加任务页面 “导入任务”可以复制其他任务的所有设置(包括采集器设置、发布设置) “导入规则”可以从其他任务或文件中复制采集器设置 “更多设置”可以为任务单独配置采集设置

  • 慕课堂除了用于上课教学互动外,老师还可以给学生布置课外任务,可以推送关联课程的视频,文档,讨论,测验,作业,考试/本校资源库中开放课程的视频资源,以及课下练习、问卷,并支持查看学生是否完成了学习任务。老师可以用电脑端或 APP 端布置课外任务。 1)电脑端:老师进入慕课堂后台,在【备课区】,点击【创建课外任务】 添加线上课时,老师可以选择从关联课程或者校级资源库中添加课时内容: 从关联课程中可以选