Ruby 基于时间的块中断

Ruby 基于时间的块中断,ruby,Ruby,我想跑一个街区60秒。到目前为止,我所提出的方案并没有达到预期的效果 @start_time = Time.now stream_some_data do |x| # .. do something ... break if Time.now == @start_time + 60 end 由于您不太可能在发车后60秒到达该线路,请尝试: break if Time.now > @start_time + 60 Ruby的stdlib已经有一个超时模块: begin re

我想跑一个街区60秒。到目前为止,我所提出的方案并没有达到预期的效果

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

由于您不太可能在发车后60秒到达该线路,请尝试:

break if Time.now > @start_time + 60

Ruby的stdlib已经有一个超时模块:

begin
  require "timeout"
  Timeout::timeout(60) do
    # all of the things...
  end
rescue Timeout::Error => e
end

我在块中使用了一个计数器,每次递增一个。当我使用时,Break有效:Break if counter==(一些数字)哦!我的错。如果Time.now>@start\u Time+60,您可能只想中断时间。可以这样做,但每60秒它就会运行一次rescue。我想在60秒后调用另一个方法,可以使用:rescue run\u\u next\u方法。但这似乎并没有像预期的那样使用“超时”!我以前的想法和你一样,但我越来越习惯于Ruby错误,一半是错误,一半是系统消息。即使每秒运行60次rescue,我也看不出有什么问题。