Module: Wikimelon::Throttle
- Defined in:
- lib/wikimelon/throttle.rb
Overview
Enforces a minimum interval between outgoing requests when Wikimelon.request_interval is set (in seconds). Thread-safe.
Class Method Summary collapse
Class Method Details
.now ⇒ Object
27 28 29 |
# File 'lib/wikimelon/throttle.rb', line 27 def self.now Process.clock_gettime(Process::CLOCK_MONOTONIC) end |
.reset! ⇒ Object
23 24 25 |
# File 'lib/wikimelon/throttle.rb', line 23 def self.reset! @mutex.synchronize { @last_request_at = nil } end |
.wait! ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/wikimelon/throttle.rb', line 10 def self.wait! interval = Wikimelon.request_interval.to_f return if interval <= 0 @mutex.synchronize do if @last_request_at elapsed = now - @last_request_at sleep(interval - elapsed) if elapsed < interval end @last_request_at = now end end |