ConcurrencyCron--golang多协程定时任务调度

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

## ConcurrentCron: A Golang Job Scheduling Package. [![GgoDoc](https://godoc.org/github.com/golang/gddo?status.svg)](https://godoc.org/github.com/whutwxn/ConcurrencyCron) [![Go ReportCard](https://goreportcard.com/report/github.com/whutwxn/ConcurrencyCron)](https://goreportcard.com/report/github.com/whutwxn/ConcurrencyCron) ConcurrentCron is a task scheduler that supports high concurrency at the same time which lets you run Go functions periodically at pre-determined interval using a simple, human-friendly syntax. You can run this scheduler in the following way ```go package main import ( "ConcurrencyCron" "context" "fmt" "github.com/gin-gonic/gin" "os" "time" ) var ( scheduler ConcurrencyCron.Scheduler ) func test(num string) { //fmt.Println("before:im a task:", num) //time.Sleep(10 * time.Second) fmt.Println("after:im a task:", num, " current time:", time.Now().Format("15:04")) } func init() { var err error ConcurrencyCron.DefaultWriter = os.Stdout scheduler, err = ConcurrencyCron.NewScheduler(200) if err != nil { fmt.Println(err) } ctx, _ := context.WithCancel(context.Background()) scheduler.Every(1).Minutes().Do(test, time.Now().Format("15:04")) scheduler.Start(ctx) } func main() { r := gin.Default() r.PUT("/addOnce", func(c *gin.Context) { tm := time.Now() hour := tm.Hour() min := tm.Minute() + 1 tim := fmt.Sprintf("%2d:%2d", hour, min) uuid := scheduler.Once().At(tim).Do(test, tim) fmt.Println(uuid) c.String(200, uuid) }) r.PUT("/addInterval", func(c *gin.Context) { }) r.DELETE("/removeOnce/:uuid", func(c *gin.Context) { uuid := c.Param("uuid") scheduler.RemoveByUuid(uuid) }) r.Run(":12315") ch := make(chan bool) <-ch //test } ```

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

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

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