我有一些像这样的红宝石代码:
result1 = function_1(params)
result2 = function_2(params)
result3 = function_3(params)
但有时其中一些可能需要花费太多时间才能工作(此功能取决于互联网连接速度)。如果需要超过5秒钟,我需要终止函数的执行。我应该如何用ruby-way来做呢?
答案 0 :(得分:14)
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
答案 1 :(得分:5)
您可以使用Timeout。
require 'timeout'
status = Timeout::timeout(5) {
# Something that should be interrupted if it takes too much time...
}