Class: ActiveJob::Temporal::RateLimiters::Memory

Inherits:
Object
  • Object
show all
Defined in:
lib/activejob/temporal/rate_limiters/memory.rb

Overview

Process-local sliding-window limiter for development, tests, and single-worker setups.

Instance Method Summary collapse

Constructor Details

#initialize(clock: -> { Process.clock_gettime(Process::CLOCK_MONOTONIC) }) ⇒ Memory

Returns a new instance of Memory.



116
117
118
119
# File 'lib/activejob/temporal/rate_limiters/memory.rb', line 116

def initialize(clock: -> { Process.clock_gettime(Process::CLOCK_MONOTONIC) })
  @clock = clock
  @bucket_store = MemoryBucketStore.new
end

Instance Method Details

#wait_time_for(rate_limits) ⇒ Object



121
122
123
124
125
126
127
128
129
# File 'lib/activejob/temporal/rate_limiters/memory.rb', line 121

def wait_time_for(rate_limits)
  limits = normalize_rate_limits(rate_limits)
  return 0.0 if limits.empty?

  now = @clock.call.to_f
  with_bucket_entries(limits, now) do |bucket_entries|
    wait_time_for_limits(limits, now, bucket_entries)
  end
end