This repository was archived by the owner on May 11, 2022. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork2
♻️ CLI tool based on github.com/kamilsk/retry package to execute commands with retries.
License
NotificationsYou must be signed in to change notification settings
octolab/try
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tool to execute terminal commands with retries.
$ retry -limit=3 -backoff=lin:500ms -- curl example.com
Full description of the idea is availablehere.
...
Usage: retry [-timeout Timeout] [--debug] [--notify] [strategy flags] -- commandThe strategy flags --infinite Infinite creates a Strategy that will never stop repeating. -limit=X Limit creates a Strategy that limits the number of attempts that Retry will make. -delay=Xs Delay creates a Strategy that waits the given duration before the first attempt is made. -wait=Xs,... Wait creates a Strategy that waits the given durations for each attempt after the first. If the number of attempts is greater than the number of durations provided, then the strategy uses the last duration provided. -backoff=:algorithm Backoff creates a Strategy that waits before each attempt, with a duration as defined by the given backoff.Algorithm. -tbackoff=":algorithm :transformation" BackoffWithJitter creates a Strategy that waits before each attempt, with a duration as defined by the given backoff.Algorithm and jitter.Transformation.:algorithm inc:Xs,Ys Incremental creates a Algorithm that increments the initial duration by the given increment for each attempt. lin:Xs Linear creates a Algorithm that linearly multiplies the factor duration by the attempt number for each attempt. exp:Xs,Y Exponential creates a Algorithm that multiplies the factor duration by an exponentially increasing factor for each attempt, where the factor is calculated as the given base raised to the attempt number. binexp:Xs BinaryExponential creates a Algorithm that multiplies the factor duration by an exponentially increasing factor for each attempt, where the factor is calculated as "2" raised to the attempt number (2^attempt). fib:Xs Fibonacci creates a Algorithm that multiplies the factor duration by an increasing factor for each attempt, where the factor is the Nth number in the Fibonacci sequence.:transformation full Full creates a Transformation that transforms a duration into a result duration in [0, n) randomly, where n is the given duration. The given generator is what is used to determine the random transformation. If a nil generator is passed, a default one will be provided. Inspired by https://www.awsarchitectureblog.com/2015/03/backoff.html equal Equal creates a Transformation that transforms a duration into a result duration in [n/2, n) randomly, where n is the given duration. The given generator is what is used to determine the random transformation. If a nil generator is passed, a default one will be provided. Inspired by https://www.awsarchitectureblog.com/2015/03/backoff.html dev:X Deviation creates a Transformation that transforms a duration into a result duration that deviates from the input randomly by a given factor. The given generator is what is used to determine the random transformation. If a nil generator is passed, a default one will be provided. Inspired by https://developers.google.com/api-client-library/java/google-http-java-client/backoff ndist:X NormalDistribution creates a Transformation that transforms a duration into a result duration based on a normal distribution of the input and the given standard deviation. The given generator is what is used to determine the random transformation. If a nil generator is passed, a default one will be provided.Examples: retry -limit=3 -backoff=lin:10ms -- curl http://example.com retry -tbackoff="lin:10s full" --debug -- curl https://example.com retry -timeout=500ms --notify --infinite -- git pullVersion 3.0.0 (commit: ..., build date: ..., go version: go1.9, compiler: gc, platform: darwin/amd64)
$ retry -limit=3 -backoff=lin:10ms -- /bin/sh -c'echo "trying..."; exit 1'trying...#2 attempt at 17.636458ms...trying...#3 attempt at 48.287964ms...trying...error occurred:"exit status 1"$ retry -timeout=500ms --infinite -- /bin/sh -c'echo "trying..."; exit 1'trying......trying...#N attempt at 499.691521ms...error occurred:"context deadline exceeded"
$ brew install kamilsk/tap/retry
$ curl -sSL https://bit.ly/install-retry| sh# or$ wget -qO- https://bit.ly/install-retry| sh
# use standard go tools$ go get -u github.com/kamilsk/retry.cli# or use egg tool$ egg tools add github.com/kamilsk/retry.cli
$ retry completion bash> /path/to/bash_completion.d/retry.sh$ retry completion zsh> /path/to/zsh-completions/_retry.zsh
1 The project is still in prototyping.↩
made with ❤️ for everyone
About
♻️ CLI tool based on github.com/kamilsk/retry package to execute commands with retries.