Class: RailsAi::Performance::RequestDeduplicator
- Inherits:
-
Object
- Object
- RailsAi::Performance::RequestDeduplicator
- Defined in:
- lib/rails_ai/performance.rb
Overview
Request deduplication
Instance Method Summary collapse
- #deduplicate(key, &block) ⇒ Object
-
#initialize ⇒ RequestDeduplicator
constructor
A new instance of RequestDeduplicator.
Constructor Details
#initialize ⇒ RequestDeduplicator
Returns a new instance of RequestDeduplicator.
134 135 136 137 |
# File 'lib/rails_ai/performance.rb', line 134 def initialize @pending_requests = Concurrent::Hash.new @mutex = Mutex.new end |
Instance Method Details
#deduplicate(key, &block) ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/rails_ai/performance.rb', line 139 def deduplicate(key, &block) @mutex.synchronize do if @pending_requests[key] # Wait for existing request @pending_requests[key].value else # Start new request future = Concurrent::Future.execute(&block) @pending_requests[key] = future begin future.value ensure @pending_requests.delete(key) end end end end |