任意のコマンドを適当にリトライするツール、retryを書いた。
外部サービス叩いたりしてるとよく手元でretryすることになったりする。shellで書いても良いのだけど、Goで書いてみた。
suzuken/retry https://github.com/suzuken/retry
-> % retry Usage: retry <command> -initialInterval int retry interval(s) (default 1) -maxElapsedTime int Max Elapsed Time(s) is limit of backoff steps. If the job spends over this, job makes stopped. If set 0, the job will never stop. (default 10000) -maxInterval int cap of retry interval(s) (default 1000)
retry
を頭につければよしなにリトライしてくれる。
-> % retry command_not_found fake 2015/08/26 19:53:28 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 19:53:29 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 19:53:31 err: exec: "command_not_found": executable file not found in $PATH ...
リトライの間隔や、最高試行時間をつけることもできる。例えばジョブによってあまり何度もリトライしたくないものなどは最大試行時間を短めにするといい。
$ retry -initialInterval=2 -maxElapsedTime=8 command_not_found 2015/08/26 16:57:37 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:39 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:43 err: exec: "command_not_found": executable file not found in $PATH 2015/08/26 16:57:49 err: exec: "command_not_found": executable file not found in $PATH operation failed: exec: "command_not_found": executable file not found in $PATH
もしよかったら使ってみてください。