Skip to content

changkun/sched

Repository files navigation

sched

GoDoc Build Status Go Report Card codecov

sched is a high performance task scheduling library with future support.

Usage

// Init sched, with tasks should recovered when reboot
futures, err := sched.Init(
    "redis://127.0.0.1:6379/1"&ArbitraryTask1{}, 
    &ArbitraryTask2{},
)
if err != nil {
    panic(err)
}
// Retrieve task's future
for i := range futures {
    fmt.Printf("%v", futures[i].Get())
}

// Setup tasks, use future.Get() to retrieve the future of task
future, err := sched.Submit(&ArbitraryTask{...})
if err != nil {
    panic(err)
}
fmt.Printf("%v", future.Get())

// Launch a task, use future.Get() to retrieve the future of task
future, err := sched.Trigger(&ArbitraryTask{...})
if err != nil {
    panic(err)
}
fmt.Printf("%v", future.Get())

// Pause sched
sched.Pause()

// Resume sched
sched.Resume()

// Wait sched schedule all tasks
sched.Wait()

// Stop sched gracefully
sched.Stop()

Task Design

Learn more regarding task design, see test examples.

License

MIT © Changkun Ou