micro/client/backoff.go
2020-01-30 19:43:03 +03:00

15 lines
416 B
Go

package client
import (
"context"
"math"
"time"
)
type BackoffFunc func(ctx context.Context, req Request, attempts int) (time.Duration, error)
// exponential backoff is a function x^e multiplied by a factor of 0.1 second.
func exponentialBackoff(ctx context.Context, req Request, attempts int) (time.Duration, error) {
return time.Duration(math.Pow(float64(attempts), math.E)) * time.Millisecond * 100, nil
}