Class: ActiveJob::Temporal::RateLimiters::Memory
- Inherits:
-
Object
- Object
- ActiveJob::Temporal::RateLimiters::Memory
- 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
-
#initialize(clock: -> { Process.clock_gettime(Process::CLOCK_MONOTONIC) }) ⇒ Memory
constructor
A new instance of Memory.
- #wait_time_for(rate_limits) ⇒ Object
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 |