simple_throttle 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/VERSION +1 -1
- data/lib/simple_throttle.rb +16 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6777d3382abb6c7e07c503e56676a8fe62be43611b2c623ac18f89928708572e
|
4
|
+
data.tar.gz: da8f2432ec4bc9dcf68e42faaf6213d662379c3ded9dfb16c1eb8c2cd27cb62c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f90008dc9debdfb8e206d25f112c0e312c4c27060256464eba6b175aefb9b5be063bbcdfb1188bbcaab05caedb6f1197d28d7b4a5ee3b40819692e4d57e9642a
|
7
|
+
data.tar.gz: 31326e2b2ab31f4fbccf8dbd6fb7d0455acdd1e745da7d90ea77f526f320fef4d77c94cc98dffc03ce9d76f4c3fc7ed167aa5b9bd72761dfc0463296b7424459
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## 1.1.1
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Fixed `increment!` method to return the correct value after removing expired requests rather than the raw count from Redis.
|
12
|
+
|
7
13
|
## 1.1.0
|
8
14
|
|
9
15
|
### Added
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
data/lib/simple_throttle.rb
CHANGED
@@ -17,9 +17,10 @@ class SimpleThrottle
|
|
17
17
|
local now = ARGV[3]
|
18
18
|
local pause_to_recover = tonumber(ARGV[4])
|
19
19
|
local amount = tonumber(ARGV[5])
|
20
|
+
local cleanup = tonumber(ARGV[6])
|
20
21
|
|
21
22
|
local size = redis.call('llen', list_key)
|
22
|
-
if size >= limit then
|
23
|
+
if size >= limit or (cleanup > 0 and size > 0) then
|
23
24
|
local expired = tonumber(now) - ttl
|
24
25
|
while size > 0 do
|
25
26
|
local t = redis.call('lpop', list_key)
|
@@ -152,7 +153,7 @@ class SimpleThrottle
|
|
152
153
|
#
|
153
154
|
# @return [Boolean]
|
154
155
|
def allowed!
|
155
|
-
size =
|
156
|
+
size = add_request(1, false)
|
156
157
|
size <= limit
|
157
158
|
end
|
158
159
|
|
@@ -163,15 +164,7 @@ class SimpleThrottle
|
|
163
164
|
# @param amount [Integer] amount to increment the throttle by
|
164
165
|
# @return [Integer]
|
165
166
|
def increment!(amount = 1)
|
166
|
-
|
167
|
-
time_ms = (Time.now.to_f * 1000).round
|
168
|
-
ttl_ms = (ttl * 1000).ceil
|
169
|
-
self.class.send(
|
170
|
-
:execute_lua_script,
|
171
|
-
redis: redis_client,
|
172
|
-
keys: [redis_key],
|
173
|
-
args: [limit, ttl_ms, time_ms, pause_to_recover_arg, amount]
|
174
|
-
)
|
167
|
+
add_request(amount, true)
|
175
168
|
end
|
176
169
|
|
177
170
|
# Reset a throttle back to zero.
|
@@ -219,4 +212,16 @@ class SimpleThrottle
|
|
219
212
|
def redis_key
|
220
213
|
"simple_throttle.#{name}"
|
221
214
|
end
|
215
|
+
|
216
|
+
def add_request(amount, cleanup)
|
217
|
+
pause_to_recover_arg = (@pause_to_recover ? 1 : 0)
|
218
|
+
time_ms = (Time.now.to_f * 1000).round
|
219
|
+
ttl_ms = (ttl * 1000).ceil
|
220
|
+
self.class.send(
|
221
|
+
:execute_lua_script,
|
222
|
+
redis: redis_client,
|
223
|
+
keys: [redis_key],
|
224
|
+
args: [limit, ttl_ms, time_ms, pause_to_recover_arg, amount, (cleanup ? 1 : 0)]
|
225
|
+
)
|
226
|
+
end
|
222
227
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_throttle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Durand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|