https://github.com/alexpantyukhin/retryer
https://github.com/alexpantyukhin/retryer
go golang golang-library retry retry-library retry-pattern retrying
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/alexpantyukhin/retryer
- Owner: alexpantyukhin
- Created: 2019-10-10T10:06:54.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-10-16T06:22:48.000Z (over 6 years ago)
- Last Synced: 2025-01-26T04:41:26.482Z (over 1 year ago)
- Topics: go, golang, golang-library, retry, retry-library, retry-pattern, retrying
- Language: Go
- Size: 9.77 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Retryer
[](https://travis-ci.org/alexpantyukhin/retryer)
[](https://godoc.org/github.com/alexpantyukhin/retryer)
The tiny library for retrying any action.
# Motivation
I needed in some similar behavior in the one of project. A half of a minute of googling showed nothing. That's why the decision to extract the library was made.
# Plans
- [ ] Add cancellation context.
# Usages
## Retry number of times
```go
Retry(10).
ExecuteBool(func() bool {
counter++
if counter == 5 {
return true
}
return false
})
```
## Retry with error
```go
Retry(10).
ExecuteError(func() error {
conn, err := MakeConnection()
return err
})
```
## Retry with wait
```go
RetryAndWait([]time.Duration{1000 * time.Millisecond, 1000 * time.Millisecond}).
ExecuteError(func() error {
conn, err := MakeConnection()
return err
})
```
## retry with wait forever
```go
RetryAndWaitForever(func(attempt int) time.Duration { return time.Duration(attempt*100) * time.Millisecond }).
ExecuteError(func() error {
conn, err := MakeConnection()
return err
})
```
# Installation
Just go get this repository with the following way:
```
go get github.com/alexpantyukhin/retryer
```