sidekiq-throttler 0.3.1 → 0.4.0
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/.gitignore +3 -2
- data/.rspec +2 -0
- data/.travis.yml +4 -6
- data/Appraisals +7 -0
- data/CHANGELOG.md +15 -0
- data/README.md +57 -2
- data/Rakefile +2 -1
- data/gemfiles/sidekiq_2.gemfile +7 -0
- data/gemfiles/sidekiq_head.gemfile +7 -0
- data/lib/sidekiq/throttler/rate_limit.rb +1 -1
- data/lib/sidekiq/throttler/version.rb +1 -1
- data/sidekiq-throttler.gemspec +12 -13
- data/spec/app/workers/proc_period_worker.rb +10 -0
- data/spec/sidekiq/throttler/rate_limit_spec.rb +14 -0
- data/spec/sidekiq/throttler_spec.rb +1 -1
- metadata +82 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8acf1d69eb8a5045cdff1273d3f44342845cfc9b
|
4
|
+
data.tar.gz: 0ca683c9e8cf5149d430391ec1bd85488f3517b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 347d780d00c2c9a538c79e0bb48f3977f037d3bd70fbce3a63a24557aa01a92b350a5d80d00fe9fc79985f3c50c7603de6c080ff518380d7ac894066492c9453
|
7
|
+
data.tar.gz: 17003989b18787321d19f939ef07f8a165aa325fd7a63c79561dd5a40eaf50087fcf96450439cbdf6a95c87c00f7bf3f52cc67c3e081568b0d298fe08084c4e3
|
data/.gitignore
CHANGED
@@ -2,17 +2,18 @@
|
|
2
2
|
*.rbc
|
3
3
|
.bundle
|
4
4
|
.config
|
5
|
-
.rspec
|
5
|
+
.rspec-local
|
6
6
|
.yardoc
|
7
7
|
Gemfile.lock
|
8
8
|
InstalledFiles
|
9
9
|
_yardoc
|
10
10
|
coverage
|
11
11
|
doc/
|
12
|
+
gemfiles/*.gemfile.lock
|
12
13
|
lib/bundler/man
|
13
14
|
pkg
|
14
15
|
rdoc
|
15
16
|
spec/reports
|
16
17
|
test/tmp
|
17
18
|
test/version_tmp
|
18
|
-
tmp
|
19
|
+
tmp
|
data/.rspec
ADDED
data/.travis.yml
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
language: ruby
|
2
|
+
services:
|
3
|
+
- redis-server
|
2
4
|
rvm:
|
5
|
+
- 2.1.1
|
6
|
+
- 2.1.0
|
3
7
|
- 2.0.0
|
4
8
|
- 1.9.3
|
5
|
-
- jruby-19mode
|
6
|
-
- rbx-19mode
|
7
9
|
branches:
|
8
10
|
only:
|
9
11
|
- master
|
@@ -11,7 +13,3 @@ notifications:
|
|
11
13
|
email:
|
12
14
|
recipients:
|
13
15
|
- gabe@ga.be
|
14
|
-
matrix:
|
15
|
-
allow_failures:
|
16
|
-
- rvm: jruby-19mode
|
17
|
-
- rvm: rbx-19mode
|
data/Appraisals
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## 0.4.0 (April 24, 2014)
|
2
|
+
|
3
|
+
* Now supports using a Proc for `:period` option.
|
4
|
+
|
5
|
+
*Kainage*
|
6
|
+
|
7
|
+
* Fix for throttler spec that was using symbol keys but the testing with
|
8
|
+
string keys.
|
9
|
+
|
10
|
+
*worst*
|
11
|
+
|
12
|
+
* Dependency lock is loosened for compatibility with Sidekiq 3.0.
|
13
|
+
|
14
|
+
*Gabe Evans*
|
15
|
+
|
1
16
|
## 0.3.1 (November 5, 2013)
|
2
17
|
|
3
18
|
* `Singleton` is explicitly required, fixing a `NameError`.
|
data/README.md
CHANGED
@@ -14,7 +14,9 @@ Sidekiq::Throttler is actively tested against MRI versions 2.0.0 and 1.9.3.
|
|
14
14
|
|
15
15
|
Add this line to your application's Gemfile:
|
16
16
|
|
17
|
-
|
17
|
+
```ruby
|
18
|
+
gem 'sidekiq-throttler'
|
19
|
+
```
|
18
20
|
|
19
21
|
And then execute:
|
20
22
|
|
@@ -49,7 +51,7 @@ Sidekiq.configure_server do |config|
|
|
49
51
|
end
|
50
52
|
```
|
51
53
|
|
52
|
-
## Usage
|
54
|
+
## Basic Usage
|
53
55
|
|
54
56
|
In a worker, specify a threshold (maximum jobs) and period for throttling:
|
55
57
|
|
@@ -68,6 +70,48 @@ end
|
|
68
70
|
In the above example, when the number of executed jobs for the worker exceeds
|
69
71
|
50 in an hour, remaining jobs will be delayed.
|
70
72
|
|
73
|
+
## Advanced Usage
|
74
|
+
|
75
|
+
### Custom Keys
|
76
|
+
|
77
|
+
By default, each worker has its own key for throttling. For example:
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
class FooWorker
|
81
|
+
include Sidekiq::Worker
|
82
|
+
|
83
|
+
sidekiq_options throttle: { threshold: 50, period: 1.hour }
|
84
|
+
|
85
|
+
# ...
|
86
|
+
end
|
87
|
+
|
88
|
+
class BarWorker
|
89
|
+
include Sidekiq::Worker
|
90
|
+
|
91
|
+
sidekiq_options throttle: { threshold: 50, period: 1.hour }
|
92
|
+
|
93
|
+
# ...
|
94
|
+
end
|
95
|
+
```
|
96
|
+
|
97
|
+
Even though `FooWorker` and `BarWorker` use the same throttle options, they are
|
98
|
+
treated as different groups. To have multiple workers with shared throttling,
|
99
|
+
the `:key` options can be used:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
sidekiq_options throttle: { threshold: 50, period: 1.hour, key: 'foobar' }
|
103
|
+
```
|
104
|
+
|
105
|
+
Any jobs using the same key, regardless of the worker will be tracked under the
|
106
|
+
same conditions.
|
107
|
+
|
108
|
+
### Dynamic Throttling
|
109
|
+
|
110
|
+
Each option (`:threshold`, `:period`, and `:key`) accepts a static value but can
|
111
|
+
*also* accept a `Proc` that's called each time a job is processed.
|
112
|
+
|
113
|
+
#### Dynamic Keys
|
114
|
+
|
71
115
|
If throttling is per-user, for example, you can specify a `Proc` for `key` which
|
72
116
|
accepts the arguments passed to your worker's `perform` method:
|
73
117
|
|
@@ -78,6 +122,8 @@ sidekiq_options throttle: { threshold: 20, period: 1.day, key: ->(user_id){ user
|
|
78
122
|
In the above example, jobs are throttled for each user when they exceed 20 in a
|
79
123
|
day.
|
80
124
|
|
125
|
+
#### Dynamic Thresholds
|
126
|
+
|
81
127
|
Thresholds can be configured based on the arguments passed to your worker's `perform` method,
|
82
128
|
similar to how the `key` option works:
|
83
129
|
|
@@ -87,6 +133,15 @@ sidekiq_options throttle: { threshold: ->(user_id, rate_limit) { rate_limit }, p
|
|
87
133
|
|
88
134
|
In the above example, jobs are throttled for each user when they exceed the rate limit provided in the message. This is useful in cases where each user may have a different rate limit (ex: interacting with external APIs)
|
89
135
|
|
136
|
+
#### Dynamic Periods
|
137
|
+
|
138
|
+
In this contrived example, our worker is limited to 9 thousand jobs every 10
|
139
|
+
minutes. However, on Tuesdays limit jobs to 9 thousand every *15 minutes*:
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
sidekiq_options throttle: { threshold: 9000, period: ->{ Date.today.tuesday? ? 15.minutes : 10.minutes } }
|
143
|
+
```
|
144
|
+
|
90
145
|
## Contributing
|
91
146
|
|
92
147
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
+
require 'appraisal'
|
2
3
|
|
3
4
|
require 'rspec/core/rake_task'
|
4
5
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
@@ -15,4 +16,4 @@ task :console, :script do |t, args|
|
|
15
16
|
command = 'bundle exec pry'
|
16
17
|
command += "-r #{args[:script]}" if args[:script]
|
17
18
|
sh command
|
18
|
-
end
|
19
|
+
end
|
@@ -83,7 +83,7 @@ module Sidekiq
|
|
83
83
|
# @return [Float]
|
84
84
|
# The number of seconds in the rate limit period.
|
85
85
|
def period
|
86
|
-
@period ||= options['period'].to_f
|
86
|
+
@period ||= (options['period'].respond_to?(:call) ? options['period'].call(*payload) : options['period']).to_f
|
87
87
|
end
|
88
88
|
|
89
89
|
##
|
data/sidekiq-throttler.gemspec
CHANGED
@@ -16,26 +16,25 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.files = `git ls-files`.split($/)
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
-
gem.require_paths =
|
19
|
+
gem.require_paths = %w(lib)
|
20
20
|
|
21
21
|
gem.add_dependency 'activesupport'
|
22
|
-
gem.add_dependency 'sidekiq', '>= 2.5', '< 3.
|
23
|
-
|
24
|
-
gem.add_development_dependency 'rake'
|
25
|
-
gem.add_development_dependency 'pry'
|
26
|
-
gem.add_development_dependency 'yard'
|
27
|
-
gem.add_development_dependency 'redcarpet'
|
28
|
-
|
29
|
-
gem.add_development_dependency 'rspec'
|
30
|
-
gem.add_development_dependency 'rspec-redis_helper'
|
31
|
-
gem.add_development_dependency 'timecop'
|
32
|
-
gem.add_development_dependency 'simplecov'
|
22
|
+
gem.add_dependency 'sidekiq', '>= 2.5', '< 3.1'
|
33
23
|
|
24
|
+
gem.add_development_dependency 'appraisal', '~> 0.5'
|
25
|
+
gem.add_development_dependency 'growl'
|
34
26
|
gem.add_development_dependency 'guard'
|
35
27
|
gem.add_development_dependency 'guard-bundler'
|
36
28
|
gem.add_development_dependency 'guard-rspec'
|
37
29
|
gem.add_development_dependency 'guard-yard'
|
30
|
+
gem.add_development_dependency 'pry'
|
31
|
+
gem.add_development_dependency 'rake'
|
38
32
|
gem.add_development_dependency 'rb-fsevent'
|
39
33
|
gem.add_development_dependency 'rb-inotify'
|
40
|
-
gem.add_development_dependency '
|
34
|
+
gem.add_development_dependency 'redcarpet'
|
35
|
+
gem.add_development_dependency 'rspec'
|
36
|
+
gem.add_development_dependency 'rspec-redis_helper'
|
37
|
+
gem.add_development_dependency 'simplecov'
|
38
|
+
gem.add_development_dependency 'timecop'
|
39
|
+
gem.add_development_dependency 'yard'
|
41
40
|
end
|
@@ -136,6 +136,20 @@ describe Sidekiq::Throttler::RateLimit do
|
|
136
136
|
|
137
137
|
describe '#period' do
|
138
138
|
|
139
|
+
context 'when period is a Proc' do
|
140
|
+
let(:worker_class) do
|
141
|
+
ProcPeriodWorker
|
142
|
+
end
|
143
|
+
|
144
|
+
let(:payload) do
|
145
|
+
[1, 1.minute]
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'returns the result of the called Proc' do
|
149
|
+
rate_limit.period.should eq(60)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
139
153
|
it 'retrieves the period from #options' do
|
140
154
|
rate_limit.options['period'] = 10.0
|
141
155
|
rate_limit.period.should eq(10.0)
|
metadata
CHANGED
@@ -1,257 +1,271 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-throttler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabe Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sidekiq
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2.5'
|
34
|
-
- - <
|
34
|
+
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '3.
|
36
|
+
version: '3.1'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '2.5'
|
44
|
-
- - <
|
44
|
+
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '3.
|
46
|
+
version: '3.1'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: appraisal
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.5'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.5'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: growl
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
50
64
|
requirements:
|
51
|
-
- -
|
65
|
+
- - ">="
|
52
66
|
- !ruby/object:Gem::Version
|
53
67
|
version: '0'
|
54
68
|
type: :development
|
55
69
|
prerelease: false
|
56
70
|
version_requirements: !ruby/object:Gem::Requirement
|
57
71
|
requirements:
|
58
|
-
- -
|
72
|
+
- - ">="
|
59
73
|
- !ruby/object:Gem::Version
|
60
74
|
version: '0'
|
61
75
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
76
|
+
name: guard
|
63
77
|
requirement: !ruby/object:Gem::Requirement
|
64
78
|
requirements:
|
65
|
-
- -
|
79
|
+
- - ">="
|
66
80
|
- !ruby/object:Gem::Version
|
67
81
|
version: '0'
|
68
82
|
type: :development
|
69
83
|
prerelease: false
|
70
84
|
version_requirements: !ruby/object:Gem::Requirement
|
71
85
|
requirements:
|
72
|
-
- -
|
86
|
+
- - ">="
|
73
87
|
- !ruby/object:Gem::Version
|
74
88
|
version: '0'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
90
|
+
name: guard-bundler
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
|
-
- -
|
93
|
+
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
95
|
version: '0'
|
82
96
|
type: :development
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
|
-
- -
|
100
|
+
- - ">="
|
87
101
|
- !ruby/object:Gem::Version
|
88
102
|
version: '0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
104
|
+
name: guard-rspec
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
92
106
|
requirements:
|
93
|
-
- -
|
107
|
+
- - ">="
|
94
108
|
- !ruby/object:Gem::Version
|
95
109
|
version: '0'
|
96
110
|
type: :development
|
97
111
|
prerelease: false
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
99
113
|
requirements:
|
100
|
-
- -
|
114
|
+
- - ">="
|
101
115
|
- !ruby/object:Gem::Version
|
102
116
|
version: '0'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
118
|
+
name: guard-yard
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
|
-
- -
|
121
|
+
- - ">="
|
108
122
|
- !ruby/object:Gem::Version
|
109
123
|
version: '0'
|
110
124
|
type: :development
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
|
-
- -
|
128
|
+
- - ">="
|
115
129
|
- !ruby/object:Gem::Version
|
116
130
|
version: '0'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
132
|
+
name: pry
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
120
134
|
requirements:
|
121
|
-
- -
|
135
|
+
- - ">="
|
122
136
|
- !ruby/object:Gem::Version
|
123
137
|
version: '0'
|
124
138
|
type: :development
|
125
139
|
prerelease: false
|
126
140
|
version_requirements: !ruby/object:Gem::Requirement
|
127
141
|
requirements:
|
128
|
-
- -
|
142
|
+
- - ">="
|
129
143
|
- !ruby/object:Gem::Version
|
130
144
|
version: '0'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
146
|
+
name: rake
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
|
-
- -
|
149
|
+
- - ">="
|
136
150
|
- !ruby/object:Gem::Version
|
137
151
|
version: '0'
|
138
152
|
type: :development
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
|
-
- -
|
156
|
+
- - ">="
|
143
157
|
- !ruby/object:Gem::Version
|
144
158
|
version: '0'
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
160
|
+
name: rb-fsevent
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
|
-
- -
|
163
|
+
- - ">="
|
150
164
|
- !ruby/object:Gem::Version
|
151
165
|
version: '0'
|
152
166
|
type: :development
|
153
167
|
prerelease: false
|
154
168
|
version_requirements: !ruby/object:Gem::Requirement
|
155
169
|
requirements:
|
156
|
-
- -
|
170
|
+
- - ">="
|
157
171
|
- !ruby/object:Gem::Version
|
158
172
|
version: '0'
|
159
173
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
174
|
+
name: rb-inotify
|
161
175
|
requirement: !ruby/object:Gem::Requirement
|
162
176
|
requirements:
|
163
|
-
- -
|
177
|
+
- - ">="
|
164
178
|
- !ruby/object:Gem::Version
|
165
179
|
version: '0'
|
166
180
|
type: :development
|
167
181
|
prerelease: false
|
168
182
|
version_requirements: !ruby/object:Gem::Requirement
|
169
183
|
requirements:
|
170
|
-
- -
|
184
|
+
- - ">="
|
171
185
|
- !ruby/object:Gem::Version
|
172
186
|
version: '0'
|
173
187
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
188
|
+
name: redcarpet
|
175
189
|
requirement: !ruby/object:Gem::Requirement
|
176
190
|
requirements:
|
177
|
-
- -
|
191
|
+
- - ">="
|
178
192
|
- !ruby/object:Gem::Version
|
179
193
|
version: '0'
|
180
194
|
type: :development
|
181
195
|
prerelease: false
|
182
196
|
version_requirements: !ruby/object:Gem::Requirement
|
183
197
|
requirements:
|
184
|
-
- -
|
198
|
+
- - ">="
|
185
199
|
- !ruby/object:Gem::Version
|
186
200
|
version: '0'
|
187
201
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
202
|
+
name: rspec
|
189
203
|
requirement: !ruby/object:Gem::Requirement
|
190
204
|
requirements:
|
191
|
-
- -
|
205
|
+
- - ">="
|
192
206
|
- !ruby/object:Gem::Version
|
193
207
|
version: '0'
|
194
208
|
type: :development
|
195
209
|
prerelease: false
|
196
210
|
version_requirements: !ruby/object:Gem::Requirement
|
197
211
|
requirements:
|
198
|
-
- -
|
212
|
+
- - ">="
|
199
213
|
- !ruby/object:Gem::Version
|
200
214
|
version: '0'
|
201
215
|
- !ruby/object:Gem::Dependency
|
202
|
-
name:
|
216
|
+
name: rspec-redis_helper
|
203
217
|
requirement: !ruby/object:Gem::Requirement
|
204
218
|
requirements:
|
205
|
-
- -
|
219
|
+
- - ">="
|
206
220
|
- !ruby/object:Gem::Version
|
207
221
|
version: '0'
|
208
222
|
type: :development
|
209
223
|
prerelease: false
|
210
224
|
version_requirements: !ruby/object:Gem::Requirement
|
211
225
|
requirements:
|
212
|
-
- -
|
226
|
+
- - ">="
|
213
227
|
- !ruby/object:Gem::Version
|
214
228
|
version: '0'
|
215
229
|
- !ruby/object:Gem::Dependency
|
216
|
-
name:
|
230
|
+
name: simplecov
|
217
231
|
requirement: !ruby/object:Gem::Requirement
|
218
232
|
requirements:
|
219
|
-
- -
|
233
|
+
- - ">="
|
220
234
|
- !ruby/object:Gem::Version
|
221
235
|
version: '0'
|
222
236
|
type: :development
|
223
237
|
prerelease: false
|
224
238
|
version_requirements: !ruby/object:Gem::Requirement
|
225
239
|
requirements:
|
226
|
-
- -
|
240
|
+
- - ">="
|
227
241
|
- !ruby/object:Gem::Version
|
228
242
|
version: '0'
|
229
243
|
- !ruby/object:Gem::Dependency
|
230
|
-
name:
|
244
|
+
name: timecop
|
231
245
|
requirement: !ruby/object:Gem::Requirement
|
232
246
|
requirements:
|
233
|
-
- -
|
247
|
+
- - ">="
|
234
248
|
- !ruby/object:Gem::Version
|
235
249
|
version: '0'
|
236
250
|
type: :development
|
237
251
|
prerelease: false
|
238
252
|
version_requirements: !ruby/object:Gem::Requirement
|
239
253
|
requirements:
|
240
|
-
- -
|
254
|
+
- - ">="
|
241
255
|
- !ruby/object:Gem::Version
|
242
256
|
version: '0'
|
243
257
|
- !ruby/object:Gem::Dependency
|
244
|
-
name:
|
258
|
+
name: yard
|
245
259
|
requirement: !ruby/object:Gem::Requirement
|
246
260
|
requirements:
|
247
|
-
- -
|
261
|
+
- - ">="
|
248
262
|
- !ruby/object:Gem::Version
|
249
263
|
version: '0'
|
250
264
|
type: :development
|
251
265
|
prerelease: false
|
252
266
|
version_requirements: !ruby/object:Gem::Requirement
|
253
267
|
requirements:
|
254
|
-
- -
|
268
|
+
- - ">="
|
255
269
|
- !ruby/object:Gem::Version
|
256
270
|
version: '0'
|
257
271
|
description: Sidekiq middleware that adds the ability to rate limit job execution.
|
@@ -261,16 +275,20 @@ executables: []
|
|
261
275
|
extensions: []
|
262
276
|
extra_rdoc_files: []
|
263
277
|
files:
|
264
|
-
- .gitignore
|
265
|
-
- .pryrc
|
266
|
-
- .
|
267
|
-
- .
|
278
|
+
- ".gitignore"
|
279
|
+
- ".pryrc"
|
280
|
+
- ".rspec"
|
281
|
+
- ".travis.yml"
|
282
|
+
- ".yardopts"
|
283
|
+
- Appraisals
|
268
284
|
- CHANGELOG.md
|
269
285
|
- Gemfile
|
270
286
|
- Guardfile
|
271
287
|
- LICENSE.txt
|
272
288
|
- README.md
|
273
289
|
- Rakefile
|
290
|
+
- gemfiles/sidekiq_2.gemfile
|
291
|
+
- gemfiles/sidekiq_head.gemfile
|
274
292
|
- lib/sidekiq-throttler.rb
|
275
293
|
- lib/sidekiq/throttler.rb
|
276
294
|
- lib/sidekiq/throttler/rate_limit.rb
|
@@ -280,6 +298,7 @@ files:
|
|
280
298
|
- sidekiq-throttler.gemspec
|
281
299
|
- spec/app/workers/custom_key_worker.rb
|
282
300
|
- spec/app/workers/lolz_worker.rb
|
301
|
+
- spec/app/workers/proc_period_worker.rb
|
283
302
|
- spec/app/workers/proc_threshold_worker.rb
|
284
303
|
- spec/app/workers/proc_worker.rb
|
285
304
|
- spec/app/workers/regular_worker.rb
|
@@ -299,17 +318,17 @@ require_paths:
|
|
299
318
|
- lib
|
300
319
|
required_ruby_version: !ruby/object:Gem::Requirement
|
301
320
|
requirements:
|
302
|
-
- -
|
321
|
+
- - ">="
|
303
322
|
- !ruby/object:Gem::Version
|
304
323
|
version: '0'
|
305
324
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
325
|
requirements:
|
307
|
-
- -
|
326
|
+
- - ">="
|
308
327
|
- !ruby/object:Gem::Version
|
309
328
|
version: '0'
|
310
329
|
requirements: []
|
311
330
|
rubyforge_project:
|
312
|
-
rubygems_version: 2.
|
331
|
+
rubygems_version: 2.2.2
|
313
332
|
signing_key:
|
314
333
|
specification_version: 4
|
315
334
|
summary: Sidekiq::Throttler is a middleware for Sidekiq that adds the ability to rate
|
@@ -317,6 +336,7 @@ summary: Sidekiq::Throttler is a middleware for Sidekiq that adds the ability to
|
|
317
336
|
test_files:
|
318
337
|
- spec/app/workers/custom_key_worker.rb
|
319
338
|
- spec/app/workers/lolz_worker.rb
|
339
|
+
- spec/app/workers/proc_period_worker.rb
|
320
340
|
- spec/app/workers/proc_threshold_worker.rb
|
321
341
|
- spec/app/workers/proc_worker.rb
|
322
342
|
- spec/app/workers/regular_worker.rb
|