gollback alternatives and similar packages
Based on the "Goroutines" category.
Alternatively, view gollback alternatives based on common mentions on social networks and blogs.
-
goworker
goworker is a Go-based background worker that runs 10 to 100,000* times faster than Ruby-based workers. -
pool
:speedboat: a limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation -
Go-Taskflow
A pure go General-purpose Task-parallel Programming Framework with integrated visualizer and profiler -
go-workers
DISCONTINUED. ๐ท Library for safely running groups of workers concurrently or consecutively that require input and output through channels -
async
A safe way to execute functions asynchronously, recovering them in case of panic. It also provides an error stack aiming to facilitate fail causes discovery. -
Hunch
Hunch provides functions like: All, First, Retry, Waterfall etc., that makes asynchronous flow control more intuitive. -
gpool
gpool - a generic context-aware resizable goroutines pool to bound concurrency based on semaphore. -
gowl
Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status. -
routine
go routine control, abstraction of the Main and some useful Executors.ๅฆๆไฝ ไธไผ็ฎก็Goroutine็่ฏ๏ผ็จๅฎ -
kyoo
Unlimited job queue for go, using a pool of concurrent workers processing the job queue entries -
execpool
A pool that spins up a given number of processes in advance and attaches stdin and stdout when needed. Very similar to FastCGI but works for any command. -
concurrency-limiter
Concurrency limiter with support for timeouts , dynamic priority and context cancellation of goroutines. -
conexec
A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking. -
queue
package queue gives you a queue group accessibility. Helps you to limit goroutines, wait for the end of the all goroutines and much more. -
hands
Hands is a process controller used to control the execution and return strategies of multiple goroutines. -
async-job
AsyncJob is an asynchronous queue job manager with light code, clear and speed. I hope so ! ๐ฌ
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of gollback or a related project?
README
โ๏ธ gollback
gollback - Go asynchronous simple function utilities, for managing execution of closures and callbacks
๐ ABOUT
Contributors:
Want to contribute ? Feel free to send pull requests!
Have problems, bugs, feature ideas? We are using the github issue tracker to manage them.
๐ Documentation
For examples visit godoc#pkg-examples
For GoDoc reference, visit pkg.go.dev
๐ HOW TO USE
๐ Benchmark
CPU: 3,3 GHz Intel Core i7
RAM: 16 GB 2133 MHz LPDDR3
โ gollback git:(master) โ go test -bench=. -cpu=4 -benchmem
goos: darwin
goarch: amd64
pkg: github.com/vardius/gollback
BenchmarkRace-4 566022 2608 ns/op 663 B/op 5 allocs/op
BenchmarkAll-4 5052489 241 ns/op 42 B/op 1 allocs/op
BenchmarkRetry-4 206430384 5.93 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/vardius/gollback 31.741s
Race
Race method returns a response as soon as one of the callbacks in an iterable resolves with the value that is not an error, otherwise last error is returne
package main
import ( "context" "errors" "fmt" "time"
"github.com/vardius/gollback"
)
func main() { r, err := gollback.Race( context.Background(), func(ctx context.Context) (interface{}, error) { time.Sleep(3 * time.Second) return 1, nil }, func(ctx context.Context) (interface{}, error) { return nil, errors.New("failed") }, func(ctx context.Context) (interface{}, error) { return 3, nil }, ) }
## All
> All method returns when all of the callbacks passed as an iterable have finished, returned responses and errors are ordered according to callback order
```go
package main
import (
"context"
"errors"
"fmt"
"time"
"github.com/vardius/gollback"
)
func main() {
rs, errs := gollback.All(
context.Background(),
func(ctx context.Context) (interface{}, error) {
time.Sleep(3 * time.Second)
return 1, nil
},
func(ctx context.Context) (interface{}, error) {
return nil, errors.New("failed")
},
func(ctx context.Context) (interface{}, error) {
return 3, nil
},
)
}
Retry
Retry method retries callback given amount of times until it executes without an error, when retries = 0 it will retry infinitely
package main
import ( "context" "errors" "fmt" "time"
"github.com/vardius/gollback"
)
func main() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel()
// Will retry infinitely until timeouts by context (after 5 seconds)
res, err := gollback.Retry(ctx, 0, func(ctx context.Context) (interface{}, error) {
return nil, errors.New("failed")
})
// Will retry 5 times or will timeout by context (after 5 seconds)
res, err := gollback.Retry(ctx, 5, func(ctx context.Context) (interface{}, error) {
return nil, errors.New("failed")
})
}
๐ [License](LICENSE.md)
-------
This package is released under the MIT license. See the complete license in the package
*Note that all licence references and agreements mentioned in the gollback README section above
are relevant to that project's source code only.