3

ブロックを 60 秒間実行したいと思います。これまでに思いついたことは、思い通りにブロックから抜け出せません。

@start_time = Time.now
stream_some_data do |x| 
  # .. do something ...
  break if Time.now == @start_time + 60
end
4

2 に答える 2

9

Ruby の stdlib には、このための Timeout モジュールが既にあります。

begin
  require "timeout"
  Timeout::timeout(60) do
    # all of the things...
  end
rescue Timeout::Error => e
end
于 2012-05-27T07:01:17.760 に答える
3

開始からちょうど60 秒後にその行に到達する可能性は低いため、次のことを試してください。

break if Time.now > @start_time + 60
于 2012-05-27T06:39:47.767 に答える