外部サービスに対して何百もの API 呼び出しを行うアプリケーションがあります。場合によっては、応答に時間がかかりすぎる電話もあります。
時間のかかるプロセスを見つけるためにrake_timeout gem を使用しているため、応答に時間がかかりTimeout::Error
すぎるリクエストがあるたびにスローされます。私はこのエラーを救出し、そのメソッドを再試行しています:
def new
@make_one_external_service_call = exteral_api_fetch1(params[:id])
@make_second_external_call = exteral_api_fetch1(@make_one_external_service_call)
#Below code will be repeated in every method
tries = 0
rescue Timeout::Error => e
tries += 1
retry if tries <= 3
logger.error e.message
end
これにより、メソッドは完全に再実行できます。これは非常に冗長で、毎回繰り返しています。
Timeout:Error
発生した場合、そのメソッドを自動的に3回再試行するようにこれを行う方法はありますか?