项目作者: vvatanabe

项目描述 :
Retry exponential backoff algorithm in Go. Generalized HTTP Request retry logic in aws/aws-sdk-go.
高级语言: Go
项目地址: git://github.com/vvatanabe/goretryer.git
创建时间: 2020-01-18T03:29:46Z
项目社区:https://github.com/vvatanabe/goretryer

开源协议:MIT License

下载


goretryer

Retry exponential backoff algorithm in Go. Generalized HTTP Request retry logic in aws/aws-sdk-go.

Requires

  • Go 1.13+

Installation

This package can be installed with the go get command:

  1. $ go get github.com/vvatanabe/goretryer

Usage

Basically

  1. package main
  2. import (
  3. "context"
  4. "errors"
  5. "github.com/vvatanabe/goretryer/exponential"
  6. "log"
  7. "time"
  8. )
  9. var ErrTemporary = errors.New("temporary")
  10. func main() {
  11. log.SetFlags(log.Lmicroseconds)
  12. retryer := exponential.Retryer{
  13. NumMaxRetries: 5,
  14. MinRetryDelay: 300 * time.Millisecond,
  15. MaxRetryDelay: 300 * time.Second,
  16. }
  17. var cnt int
  18. operation := func(ctx context.Context) error {
  19. cnt++
  20. log.Println("cnt", cnt)
  21. return ErrTemporary
  22. }
  23. isErrorRetryable := func(err error) bool {
  24. return err == ErrTemporary
  25. }
  26. over, err := retryer.Do(context.Background(), operation, isErrorRetryable)
  27. if err != nil {
  28. log.Printf("retry over: %v, error: %v\n", over, err)
  29. }
  30. }

Acknowledgments

See aws-sdk-go/aws/client/default_retryer.go for great origins.

Bugs and Feedback

For bugs, questions and discussions please use the Github Issues.