An open API service indexing awesome lists of open source software.

https://github.com/atomicgo/schedule

⏰ Easily schedule non-blocking tasks in Go. Supports durations, specific times and intervals.
https://github.com/atomicgo/schedule

atomicgo go golang golang-library hacktoberfest schedule scheduler ticker time timer

Last synced: 5 months ago
JSON representation

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

Awesome Lists containing this project

README

          

AtomicGo | schedule


Downloads


Latest Release


Tests


Coverage


Unit test count


License: MIT



Go report

---


Documentation
|
Contributing
|
Code of Conduct

---


AtomicGo


go get atomicgo.dev/schedule



# schedule

```go
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>)
- [func After\(duration time.Duration, task func\(\)\) \*Task](<#After>)
- [func At\(t time.Time, task func\(\)\) \*Task](<#At>)
- [func Every\(interval time.Duration, task func\(\) bool\) \*Task](<#Every>)
- [func \(s \*Task\) ExecutesIn\(\) time.Duration](<#Task.ExecutesIn>)
- [func \(s \*Task\) IsActive\(\) bool](<#Task.IsActive>)
- [func \(s \*Task\) NextExecutionTime\(\) time.Time](<#Task.NextExecutionTime>)
- [func \(s \*Task\) StartedAt\(\) time.Time](<#Task.StartedAt>)
- [func \(s \*Task\) Stop\(\)](<#Task.Stop>)
- [func \(s \*Task\) Wait\(\)](<#Task.Wait>)


## type [Task]()

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

```go
type Task struct {
// contains filtered or unexported fields
}
```


### func [After]()

```go
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

```go
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]()

```go
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

```go
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]()

```go
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

```go
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]()

```go
func (s *Task) ExecutesIn() time.Duration
```

ExecutesIn returns the duration until the next execution.


### func \(\*Task\) [IsActive]()

```go
func (s *Task) IsActive() bool
```

IsActive returns true if the scheduler is active.


### func \(\*Task\) [NextExecutionTime]()

```go
func (s *Task) NextExecutionTime() time.Time
```

NextExecutionTime returns the time when the next execution will happen.


### func \(\*Task\) [StartedAt]()

```go
func (s *Task) StartedAt() time.Time
```

StartedAt returns the time when the scheduler was started.


### func \(\*Task\) [Stop]()

```go
func (s *Task) Stop()
```

Stop stops the scheduler.


### func \(\*Task\) [Wait]()

```go
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](https://atomicgo.dev)  · 
> with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |
> [MarvinJWendt.com](https://marvinjwendt.com)