實現(xiàn)了一個golang周期任務(wù)調(diào)度包

drumstick

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


鼓槌(雞腿),golang定時任務(wù)包

功能特性:

  • 1.提供時間補償機制,避免周期任務(wù)調(diào)度中時間損耗累計導(dǎo)致的長期使用后產(chǎn)生任務(wù)滯后現(xiàn)象
  • 2.參數(shù)可傳入自定義函數(shù), 和變長自定義參數(shù)
  • 3.未完待續(xù)...

方法:

  • NewTask(time.Duration, function, ...param) (*Task, error)
    • 創(chuàng)建任務(wù)對象,當(dāng)周期時間小于等于0時返回錯誤,否則返回nil
    • task, err := drumstick.NewTask(2*time.Second, func1, "hello", 1 ,2)
  • (*Task) Start()
    • 啟動任務(wù)
    • task.Start()
  • (*Task) Stop()
    • 停止任務(wù)繼續(xù)生產(chǎn),即已經(jīng)啟動的任務(wù)不會被結(jié)束,而是關(guān)閉他的調(diào)度器不再生產(chǎn)新任務(wù)
    • task.Stop()
  • (*Task) Reset(time.Duration)
    • 更新指定任務(wù)的周期時間
    • 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)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容