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

https://github.com/changkun/sched

⏳ a high performance reliable task scheduling package in Go.
https://github.com/changkun/sched

go golang high-performance persistence scheduler

Last synced: about 1 year ago
JSON representation

⏳ a high performance reliable task scheduling package in Go.

Awesome Lists containing this project

README

          

# sched

[![GoDoc](https://godoc.org/github.com/changkun/sched?status.svg)](https://godoc.org/github.com/changkun/sched) [![Build Status](https://travis-ci.org/changkun/sched.svg?branch=master)](https://travis-ci.org/changkun/sched) [![Go Report Card](https://goreportcard.com/badge/github.com/changkun/sched)](https://goreportcard.com/report/github.com/changkun/sched) [![codecov](https://codecov.io/gh/changkun/sched/branch/master/graph/badge.svg)](https://codecov.io/gh/changkun/sched) [![](https://img.shields.io/github/release/changkun/sched/all.svg)](https://github.com/changkun/sched/releases)

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

## Usage

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

## License

[MIT](./LICENSE) © [Changkun Ou](https://changkun.de)