如果工作时间太长,如何终止ruby函数执行?

Alv*_*lve 2 ruby timeout execution terminate

我有一些像这样的ruby代码:

result1 = function_1(params)
result2 = function_2(params)
result3 = function_3(params)
Run Code Online (Sandbox Code Playgroud)

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

Ere*_*bih 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
Run Code Online (Sandbox Code Playgroud)

  • Ruby 太棒了……说真的 (2认同)

xda*_*azz 5

你可以使用超时.

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