retry
An exponentially backing off retry package for Go.

go get github.com/coder/retry
Features
- A
for loop experience instead of closures
- Only 2 exported methods
- No external dependencies
Examples
Wait for connectivity to google.com, checking at most once every
second.
func pingGoogle(ctx context.Context) error {
var err error
r := retry.New(time.Second, time.Second*10)
for r.Wait(ctx) {
_, err = http.Get("https://google.com")
if err != nil {
continue
}
break
}
return err
}
Wait for connectivity to google.com, checking at most 10 times.
func pingGoogle(ctx context.Context) error {
var err error
r := retry.New(time.Second, time.Second*10)
for n := 0; r.Wait(ctx) && n < 10; n++ {
_, err = http.Get("https://google.com")
if err != nil {
continue
}
break
}
return err
}