おそらくはそれさえも平凡な日々

わたし、諦めない! - golangの場合

Perlの世界には、Sub::Retryという便利なリトライモジュールがあるのですが、それをgolangに移植した。API投げるのに失敗したときにリトライしてほしいとかそういうのがあるわけです。mackerel-agentで使ってます。

https://github.com/Songmu/retry

Synopsisまんまですが、以下のように使う。

err := retry.Retry(3, 1*time.Second, func() error {
    // たまにコケるような処理
})
if err != nil {
    // error handling
}

こういうリトライ制御に関しては、golangの場合、指数バックオフをちゃんと実装してある https://github.com/cenkalti/backoff というのがあり、これがよくできているのですが、これを使うまでもないかなーという感じだったのでとりあえずこういう簡単なやつを書いてみた次第。

あわせて読みたい: http://blog.64p.org/entry/20110113/1294920074

created at
last modified at

2015-07-06T00:44:51+0900

comments powered by Disqus