Когда вы звоните третьим сторонам, вы хотите установить разумный тайм-аут, и вы также можете сделать несколько попыток, прежде чем сдаться. Вот относительно краткий способ сделать это в Ruby (3 попытки, каждая с таймаутом в 5 секунд):
3.times do
begin
Timeout::timeout(5) do
# Call your third party (for a example, a payment gateway)
end
@success = true
break
rescue Exception
# Try again!
end
end
if @success
# Jump for joy!
end
Я уверен, что кто-то будет вмешиваться с еще более сексуальным способом …