使用SystemTimer挽救超时

时间:2011-02-11 19:09:56

标签: ruby timeout

我正在使用SystemTimer gem来处理超时问题。 https://github.com/ph7/system-timer

我找不到在超时

时捕获异常的方法
begin
  SystemTimer.timeout_after(10.seconds) do
    # facebook api
    rest_graph.fql(query)
  end
rescue RestGraph::Error::InvalidAccessToken
  return nil
rescue Timeout::Error
  # never executed
end

但最后一次Exception Timeout :: Error永远不会被触发。

2 个答案:

答案 0 :(得分:1)

为什么不使用1.9.2附带的Timeout来设计这样做?

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

答案 1 :(得分:0)

试试这个:(根据你的链接)

class TimedOut < StandardError
end

begin
  SystemTimer.timeout_after(10.seconds, TimedOut) do
    # ...
  end
rescue TimedOut
  # ...
end