Alve
Alve

Reputation: 1465

How to terminate ruby function execution if it takes too long time to work?

I have some ruby code like this:

result1 = function_1(params)
result2 = function_2(params)
result3 = function_3(params)

But sometimes some of them can take too much time to work (this functions are depends on internet connection speed). I need to terminate execution of function if it takes more then 5 second. How I should do it with ruby-way?

Upvotes: 4

Views: 3548

Answers (2)

Erez Rabih
Erez Rabih

Reputation: 15788

require 'timeout'
timeout_in_seconds = 20
begin
  Timeout::timeout(timeout_in_seconds) do
    #Do something that takes long time
  end
rescue Timeout::Error
  # Too slow!!
end

Upvotes: 22

xdazz
xdazz

Reputation: 160833

You could use Timeout.

require 'timeout'
status = Timeout::timeout(5) {
  # Something that should be interrupted if it takes too much time...
}

Upvotes: 7

Related Questions