我正在通过开发任务计划来学习 go-lang。我使用的cron 库接受一个 cron 表达式和一个 func 作为参数来添加调度程序。
c.AddFunc("0 30 * * * *", func() { fmt.Println("每半小时") })
我正在根据 yaml 文件开发计划作业。所以我迭代作业以添加这样的调度程序:
类型作业结构{
名称字符串
间隔字符串
}
func DistributeJob(作业作业){
log.Println("running", job, job.Interval)
}
功能主(){
//从yaml加载配置
c := cron.New()
对于 _, 工作 := 范围 config.Jobs {
c.AddFunc("@every"+job.Interval, func() {
分发作业(作业)
})
log.Println("Job " + job.Name + " 已安排!")
}
c.开始()
选择 {}
}
所有作业都按它们的时间间隔安排,但事实证明它们正在打印最后一个作业的描述。例如,如果我安排两个作业,第一个间隔为 3 分钟,后一个间隔为 1 分钟。控制台打印:
12:01:运行后1分钟
12:02:跑后1分钟
12:03:跑后1分钟
12:03:跑后1分钟//这应该是第一个工作
我认为问题出在
功能(){
分发作业(作业)
})
似乎只需要最后一份工作,但我不知道为什么。我尝试使用
c.AddFunc("@every"+job.Interval, func(job JobType) {
分发作业(作业)
}(工作))
但由于不能用作值而失败
相关分类