Documentation | Contributing | Code of Conduct
import "atomicgo.dev/schedule"
Package schedule provides a simple scheduler for Go.
It can run a function at a given time, in a given duration, or repeatedly at a given interval.
- type Task
- func After(duration time.Duration, task func()) *Task
- func At(t time.Time, task func()) *Task
- func Every(interval time.Duration, task func() bool) *Task
- func (s *Task) ExecutesIn() time.Duration
- func (s *Task) IsActive() bool
- func (s *Task) NextExecutionTime() time.Time
- func (s *Task) StartedAt() time.Time
- func (s *Task) Stop()
- func (s *Task) Wait()
type Task
Task holds information about the running task and can be used to stop running tasks.
type Task struct {
// contains filtered or unexported fields
}
func After
func After(duration time.Duration, task func()) *Task
After executes the task after the given duration. The function is non-blocking. If you want to wait for the task to be executed, use the Task.Wait method.
Example
package main
import (
"fmt"
"time"
"atomicgo.dev/schedule"
)
func main() {
task := schedule.After(5*time.Second, func() {
fmt.Println("5 seconds are over!")
})
fmt.Println("Some stuff happening...")
task.Wait()
}
func At
func At(t time.Time, task func()) *Task
At executes the task at the given time. The function is non-blocking. If you want to wait for the task to be executed, use the Task.Wait method.
Example
package main
import (
"fmt"
"time"
"atomicgo.dev/schedule"
)
func main() {
task := schedule.At(time.Now().Add(5*time.Second), func() {
fmt.Println("5 seconds are over!")
})
fmt.Println("Some stuff happening...")
task.Wait()
}
func Every
func Every(interval time.Duration, task func() bool) *Task
Every executes the task in the given interval, as long as the task function returns true. The function is non-blocking. If you want to wait for the task to be executed, use the Task.Wait method.
Example
package main
import (
"fmt"
"time"
"atomicgo.dev/schedule"
)
func main() {
task := schedule.Every(time.Second, func() bool {
fmt.Println("1 second is over!")
return true // return false to stop the task
})
fmt.Println("Some stuff happening...")
time.Sleep(10 * time.Second)
task.Stop()
}
func (*Task) ExecutesIn
func (s *Task) ExecutesIn() time.Duration
ExecutesIn returns the duration until the next execution.
func (*Task) IsActive
func (s *Task) IsActive() bool
IsActive returns true if the scheduler is active.
func (*Task) NextExecutionTime
func (s *Task) NextExecutionTime() time.Time
NextExecutionTime returns the time when the next execution will happen.
func (*Task) StartedAt
func (s *Task) StartedAt() time.Time
StartedAt returns the time when the scheduler was started.
func (*Task) Stop
func (s *Task) Stop()
Stop stops the scheduler.
func (*Task) Wait
func (s *Task) Wait()
Wait blocks until the scheduler is stopped. After and At will stop automatically after the task is executed.
Generated by gomarkdoc
AtomicGo.dev · with ❤️ by @MarvinJWendt | MarvinJWendt.com