4

我有一些这样的红宝石代码:

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

但有时其中一些可能需要太多时间才能工作(此功能取决于互联网连接速度)。如果需要超过 5 秒,我需要终止函数的执行。我应该如何用 ruby​​-way 做到这一点?

4

2 回答 2

19
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
于 2012-07-26T07:28:30.953 回答
7

您可以使用Timeout

require 'timeout'
status = Timeout::timeout(5) {
  # Something that should be interrupted if it takes too much time...
}
于 2012-07-26T07:25:11.093 回答