我正在通过开发任务计划来学习 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) { 分发作业(作业) }(工作))但由于不能用作值而失败
1 回答
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消