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)
}