DB に接続失敗したばあいに数秒後にリトライしてほしいとか、 API なげるのに失敗したときにリトライしてほしいとか、そういう処理を楽にかけるモジュールつくった。
以下のようにしてつかう。
use Sub::Retry;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $res = retry 3, 1, sub {
my $res = $ua->post('http://example.com/api/foo/bar');
$res->is_success or die;
$res;
};