Skip to content

Repository files navigation

AtomicGo



AtomicGo | schedule

DownloadsLatest ReleaseTestsCoverageUnit test countLicense: MITGo report


Documentation | Contributing | Code of Conduct


go get atomicgo.dev/schedule

schedule

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.

Index

type Task

Task holds information about the running task and can be used to stop running tasks.

typeTaskstruct {
// contains filtered or unexported fields
}

func After

funcAfter(duration time.Duration, taskfunc()) *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.

package main
import (
"fmt""time""atomicgo.dev/schedule"
)
funcmain() {
task:=schedule.After(5*time.Second, func() {
fmt.Println("5 seconds are over!")
})
fmt.Println("Some stuff happening...")
task.Wait()
}

func At

funcAt(t time.Time, taskfunc()) *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.

package main
import (
"fmt""time""atomicgo.dev/schedule"
)
funcmain() {
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

funcEvery(interval time.Duration, taskfunc() 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.

package main
import (
"fmt""time""atomicgo.dev/schedule"
)
funcmain() {
task:=schedule.Every(time.Second, func() bool {
fmt.Println("1 second is over!")
returntrue// 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 | mjw.dev

About

⏰ Easily schedule non-blocking tasks in Go. Supports durations, specific times and intervals.

Topics

Resources

Code of conduct

Stars

12 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

Generated from atomicgo/template