MCPcopy Create free account
hub / github.com/cloud-native-go/examples / Retry

Function Retry

ch04/retry.go:25–42  ·  view source on GitHub ↗
(effector Effector, retries int, delay time.Duration)

Source from the content-addressed store, hash-verified

23)
24
25func Retry(effector Effector, retries int, delay time.Duration) Effector {
26 return func(ctx context.Context) (string, error) {
27 for r := 0; ; r++ {
28 response, err := effector(ctx)
29 if err == nil || r >= retries {
30 return response, err
31 }
32
33 log.Printf("Attempt %d failed; retrying in %v", r+1, delay)
34
35 select {
36 case <-time.After(delay):
37 case <-ctx.Done():
38 return "", ctx.Err()
39 }
40 }
41 }
42}

Callers 1

TestRetryFunction · 0.85

Calls 1

ErrMethod · 0.65

Tested by 1

TestRetryFunction · 0.68