A simple Go retry package and it is heavily inspired from the try package from Mat Ryer
go get github.com/swathinsankaran/retry
retry.Do with the function you want to retry along with number of retries(maxRetryAttempt) and a timeout for the entire execution(retryTimeout).
The retry package retries when it encounters any of the below events:
- Function passed returns an error.
- Execution of the function passed was unsuccessful.
The retry package returns error in the below cases:
- Function passed returns an error.
- Retry count exceeds
maxRetryAttempt. - Function execution time exceeds
retryTimeoutmilliseconds.
Example:
import "github.com/swathinsankaran/retry"
// some codes...
err := retry.Do(func() (bool, error) {
// code to retry goes here...
}, 10, 1)
In the above example the function will be called repeatedly until:
- error is
nil. - retries exceeds
10. - execution time exceeds
1 millisecond.