sched
is a high performance task scheduling library with future support.
// 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()
Learn more regarding task design, see test examples.