定时任务和调度的工具库 coming

AlexAnyang · · 2989 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

# coming //coming 是一个原生的任务调度系统,目前给出了定时任务和计划任务的解决方案 *已实现功能*: 1.添加定时任务 2.构造顺序工作链 3.实现暂停/重启功能 4.可循环执行功能,已实现,需要手动 任务调度 ```go package main import ( "fmt" "time" "github.com/alexanyang/coming" ) func main() { task := coming.NewTask() task.Add(func(this *coming.Task, i int) error { fmt.Printf("%s 执行第一个任务,序号:%v \n", time.Now(), i) this.PushData(fmt.Sprintf("第一个任务结果,序号:%v", i)) time.Sleep(2 * time.Second) return nil }).Add(func(this *coming.Task, i int) error { fmt.Printf("%s 执行第二个任务,序号:%v \n", time.Now(), i) this.PushData(fmt.Sprintf("第二个任务结果,序号:%v", i)) time.Sleep(2 * time.Second) return nil }).Add(func(this *coming.Task, i int) error { fmt.Printf("%s 执行第三个任务,序号:%v \n", time.Now(), i) this.PushData(fmt.Sprintf("第三个任务结果,序号:%v", i)) time.Sleep(2 * time.Second) return nil }) // 检查操作是否成功 if err := task.Error(); err != nil { fmt.Println(err) return } fmt.Printf("%s: 任务Start\n", time.Now()) if err := task.Start(); err != nil { fmt.Println(err) return } fmt.Printf("%s: 任务数量:%v, and run\n", time.Now(), task.Len()) if err := task.Run(); err != nil { fmt.Println(err) return } time.Sleep(1 * time.Second) fmt.Printf("%s: 暂停中\n", time.Now()) task.Pause() go func() { time.Sleep(5 * time.Second) fmt.Printf("%s: resume\n", time.Now()) task.Resume() }() //fmt.Println("stop") //task.Stop() //开始等待结束 fmt.Printf("%s: main等待执行完成 \n", time.Now()) task.WaitFinish() fmt.Printf("%s: main执行完成\n", time.Now()) fmt.Println("获取结果回调:") call, _ := task.Call() if len(call) > 0 { for k, v := range call { fmt.Printf("结果 %v:%v \n", k, v) } } time.Sleep(2 * time.Second) fmt.Println("结果输出完成") } ``` 运行定时任务 ```go func TestNewSchedule(t *testing.T) { //ANY 分别对应时分秒,hour,minute,second coming.NewDailySchedule(ANY, ANY, ANY,"每秒任务", func(t time.Time) { fmt.Printf("现在时间是%s,定时执行中\n", t) }) //延时关闭才能看到协程输出 time.Sleep(5 * time.Second) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2989 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2023-02-01 18:03:41
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传