class ElasticAPM::Util::Throttle
Throttle.new(5) { thing to only do once per 5 secs }
Usage example:
def call
def call if @last_call && seconds_since_last_call < @buffer_secs return @last_result end @last_call = now @last_result = @block.call end
def initialize(buffer_secs, &block)
def initialize(buffer_secs, &block) @buffer_secs = buffer_secs @block = block end
def now
def now Process.clock_gettime(Process::CLOCK_MONOTONIC) end
def seconds_since_last_call
def seconds_since_last_call now - @last_call end