goretryer

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2020 License: MIT

README

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:

$ go get github.com/vvatanabe/goretryer

Usage

Basically
package main

import (
	"context"
	"errors"
	"github.com/vvatanabe/goretryer/exponential"
	"log"
	"time"
)

var ErrTemporary = errors.New("temporary")

func main() {

	log.SetFlags(log.Lmicroseconds)

	retryer := exponential.Retryer{
		NumMaxRetries: 5,
		MinRetryDelay: 300 * time.Millisecond,
		MaxRetryDelay: 300 * time.Second,
	}

	var cnt int
	operation := func(ctx context.Context) error {
		cnt++
		log.Println("cnt", cnt)
		return ErrTemporary
	}

	isErrorRetryable := func(err error) bool {
		return err == ErrTemporary
	}

	over, err := retryer.Do(context.Background(), operation, isErrorRetryable)
	if err != nil {
		log.Printf("retry over: %v, error: %v\n", over, err)
	}
}

Acknowledgments

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

Bugs and Feedback

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL