読者です 読者をやめる 読者になる 読者になる

すずけんメモ

技術メモです

任意のコマンドを適当にリトライするツール、retryを書いた。

golang

外部サービス叩いたりしてるとよく手元で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

もしよかったら使ってみてください。