package
3.0.0+incompatible
Repository: https://github.com/donutloop/toolkit.git
Documentation: pkg.go.dev

# README

Usage of Retrier

Retry supervised do funcs which automatically handle failures when they occur by performing retries.

Example

package main 

import (
	"github.com/donutloop/toolkit/retry"
	"log"
	"context"
)

func main() {

    r := retry.NewRetrier(0.125, 0.25, 2, new(retry.Exp))
  
    err := r.Retry(context.Background(), func() (bool, error) {
   		// do things
   		return true, nil
    })
    
    if err != nil {
        log.Fatal(err)
    }
}

Usage of Roundtripper Retrier

Example

package main 

import (
	"github.com/donutloop/toolkit/retry"
	"log"
	"context"
)

func main() {
        retryRoundTripper := retry.NewRoundTripper(http.DefaultTransport, .50 , .15 , 3, []int{http.StatusBadRequest}, new(retry.Exp))
	httpClient := new(http.Client)
	httpClient.Transport = retryRoundTripper

	req, err := http.NewRequest(http.MethodGet, "http://example.com", nil )
	if err != nil {
		//...
	}

	resp, err := httpClient.Do(req)
	if err != nil {
		//...
	}
}