美文网首页
实现了一个golang周期任务调度包

实现了一个golang周期任务调度包

作者: openex | 来源:发表于2018-04-04 16:55 被阅读0次

    drumstick

    Implement crond by Golang
    https://github.com/openex27/drumstick


    鼓槌(鸡腿),golang定时任务包

    功能特性:

    • 1.提供时间补偿机制,避免周期任务调度中时间损耗累计导致的长期使用后产生任务滞后现象
    • 2.参数可传入自定义函数, 和变长自定义参数
    • 3.未完待续...

    方法:

    • NewTask(time.Duration, function, ...param) (*Task, error)
      • 创建任务对象,当周期时间小于等于0时返回错误,否则返回nil
      • task, err := drumstick.NewTask(2*time.Second, func1, "hello", 1 ,2)
    • (*Task) Start()
      • 启动任务
      • task.Start()
    • (*Task) Stop()
      • 停止任务继续生产,即已经启动的任务不会被结束,而是关闭他的调度器不再生产新任务
      • task.Stop()
    • (*Task) Reset(time.Duration)
      • 更新指定任务的周期时间
      • task.Reset(1*time.Second)

    示例:

    package main
    
    import (
            "fmt"
            "time"
    
            drum "github.com/openex27/drumstick"
    )
    
    func sumEcho(s string, a, b int) {
            fmt.Printf("%s -> %d\n", s, a+b)
    }
    
    func main() {
            task, err := drum.NewTask(2*time.Second, sumEcho, "hello", 1, 5)
            if err != nil {
                    panic(err)
            }
            task.Start()
            time.Sleep(5 * time.Second)
            task.Reset(1 * time.Second)
            time.Sleep(5 * time.Second)
            task.Stop()
            time.Sleep(1 * time.Second)
    }
    

    相关文章

      网友评论

          本文标题:实现了一个golang周期任务调度包

          本文链接:https://www.haomeiwen.com/subject/utflhftx.html