Begin use of `cache_key`s when tracking throttles. NEXT: Remove @entries in favor of Redis

pull/1543/head
Rick Carlino 2019-10-28 13:39:02 -05:00
parent c2688aab0a
commit de09cad3b4
1 changed files with 20 additions and 4 deletions

View File

@ -30,7 +30,7 @@ class ThrottlePolicy
end
def usage_count_for(unique_id)
@entries[unique_id] || 0
init_fetch(unique_id)
end
def when_does_next_period_start?
@ -41,17 +41,33 @@ class ThrottlePolicy
def reset_everything(now)
@current_period = calculate_period(now)
@entries = {}
reset_cache
end
def increment_count_for(unique_id)
@entries[unique_id] ||= 0
@entries[unique_id] += 1
init_fetch(unique_id)
incr(unique_id)
end
# Returns integer representation of current clock period
def calculate_period(time)
(time.to_i / @time_unit)
end
def cache_key(unique_id)
[@namespace, current_period.to_i, unique_id].join(":")
end
def incr(unique_id)
@entries[cache_key(unique_id)] += 1
end
def init_fetch(unique_id)
@entries[cache_key(unique_id)] ||= 0
end
def reset_cache
@entries = {}
end
end
end