redis-gcra 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/redis-gcra/version.rb +1 -1
- data/vendor/inspect_gcra_ratelimit.lua +3 -2
- data/vendor/perform_gcra_ratelimit.lua +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a555bd0c5133502c4cc4c08641264cd96e298eaa
|
4
|
+
data.tar.gz: 6bd73c4a8b8ffbcf8643f56486a75ca390a22f7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94425557f81dc68a91f858e6743f659c0a09e792b552b1915f16299e6a93a8c69985edd66b1ca6ff92f55c64ac728b152ba8b2826f5f4ed4f42bd99f23c59bbd
|
7
|
+
data.tar.gz: 2d6624441c79b169756c2092e22dfa5e95b5f3b38ea09ba2d8ed5c07429c32105a0324a3a0d6b347ed724d994e95dc6feaa3c4ee20dd24f08adf7a2160d84a0a
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# RedisGCRA
|
2
2
|
[![Build Status](https://travis-ci.org/rwz/redis-gcra.svg?branch=master)](https://travis-ci.org/rwz/redis-gcra)
|
3
|
+
[![Gem Version](https://img.shields.io/gem/v/redis-gcra.svg)](https://rubygems.org/gems/redis-gcra)
|
3
4
|
|
4
5
|
This gem is an implementation of [GCRA][gcra] for rate limiting based on Redis.
|
5
6
|
The code requires Redis version 3.2 or newer since it relies on
|
data/lib/redis-gcra/version.rb
CHANGED
@@ -28,7 +28,7 @@ end
|
|
28
28
|
local allow_at = math.max(tat, now) - burst_offset
|
29
29
|
local diff = now - allow_at
|
30
30
|
|
31
|
-
local remaining = math.floor(diff / emission_interval)
|
31
|
+
local remaining = math.floor(diff / emission_interval + 0.5) -- poor's man round
|
32
32
|
|
33
33
|
local reset_after = tat - now
|
34
34
|
if reset_after == 0 then
|
@@ -38,7 +38,8 @@ end
|
|
38
38
|
local limited
|
39
39
|
local retry_after
|
40
40
|
|
41
|
-
if remaining
|
41
|
+
if remaining < 1 then
|
42
|
+
remaining = 0
|
42
43
|
limited = 1
|
43
44
|
retry_after = emission_interval - diff
|
44
45
|
else
|
@@ -36,11 +36,12 @@ local allow_at = new_tat - burst_offset
|
|
36
36
|
local diff = now - allow_at
|
37
37
|
|
38
38
|
local limited
|
39
|
-
local remaining
|
40
39
|
local retry_after
|
41
40
|
local reset_after
|
42
41
|
|
43
|
-
|
42
|
+
local remaining = math.floor(diff / emission_interval + 0.5) -- poor man's round
|
43
|
+
|
44
|
+
if remaining < 0 then
|
44
45
|
limited = 1
|
45
46
|
remaining = 0
|
46
47
|
reset_after = tat - now
|
@@ -49,7 +50,6 @@ else
|
|
49
50
|
limited = 0
|
50
51
|
reset_after = new_tat - now
|
51
52
|
redis.call("SET", rate_limit_key, new_tat, "EX", math.ceil(reset_after))
|
52
|
-
remaining = math.floor(diff / emission_interval + 0.5) -- poor man's round
|
53
53
|
retry_after = -1
|
54
54
|
end
|
55
55
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-gcra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Pravosud
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
58
|
version: '0'
|
59
59
|
requirements: []
|
60
60
|
rubyforge_project:
|
61
|
-
rubygems_version: 2.6.
|
61
|
+
rubygems_version: 2.6.11
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Rate limiting based on Generic Cell Rate Algorithm
|