Tentar novamente
Pacote de mecanismo de repetição simples e fácil para Go
Instalação
Instale o pacote usandogo $ go get github.com/thedevsaddam/retry
Uso
Para usar o pacote importe-o em seu *.go
códigogo import "github.com/thedevsaddam/retry"
Exemplo
Basta repetir uma função para executar no máximo 10 vezes com intervalo de 1 segundo
package main
import (
"fmt"
"time"
"github.com/thedevsaddam/retry"
)
func main() {
i := 1 // lets assume we expect i to be a value of 8
err := retry.DoFunc(10, 1*time.Second, func() error {
fmt.Printf("trying for: %dth timen", i)
i++
if i > 7 {
return nil
}
return fmt.Errorf("i = %d is still low value", i)
})
if err != nil {
panic(err)
}
fmt.Println("Got our expected result: ", i)
}
Podemos executar funções de outro pacote com argumentos e valores de retorno
package main
import (
"errors"
"log"
"time"
"github.com/thedevsaddam/retry"
)
func div(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("Can not divide by zero")
}
return a / b, nil
}
func main() {
a := 20.6
b := 3.7 // if we assign 0.0 to b, it will cause an error and will retry for 3 times
res, err := retry.Do(3, 5*time.Second, div, a, b)
if err != nil {
panic(err)
}
log.Println(res[0].Interface(), res[1].Interface())
}
Licença
A nova tentativa é um software de código aberto licenciado sob a Licença MIT .