4

私はこのようなルビーコードを持っています:

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

ただし、一部の機能は動作に時間がかかりすぎる場合があります(この機能はインターネット接続速度によって異なります)。5秒以上かかる場合は、関数の実行を終了する必要があります。ルビーウェイでどうすればいいですか?

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

タイムアウトを使用できます。

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