lowkiq 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,43 @@
1
+ module Lowkiq
2
+ module Worker
3
+ extend ExtendTracker
4
+
5
+ attr_accessor :shards_count,
6
+ :batch_size,
7
+ :max_retry_count,
8
+ :queue_name,
9
+
10
+ def self.extended(mod)
11
+ super
12
+ mod.shards_count = 5
13
+ mod.batch_size = 1
14
+ mod.max_retry_count = 25
15
+ mod.queue_name = mod.name
16
+ end
17
+
18
+ # i.e. 15, 16, 31, 96, 271, ... seconds + a random amount of time
19
+ def retry_in(retry_count)
20
+ (retry_count ** 4) + 15 + (rand(30) * (retry_count + 1))
21
+ end
22
+
23
+ def perform(payload)
24
+ fail "not implemented"
25
+ end
26
+
27
+ def client_queue
28
+ Queue::Queue.new Lowkiq.client_redis_pool, self.queue_name, self.shards_count
29
+ end
30
+
31
+ def client_queries
32
+ Queue::Queries.new Lowkiq.client_redis_pool, self.queue_name
33
+ end
34
+
35
+ def client_actions
36
+ Queue::Actions.new client_queue, client_queries
37
+ end
38
+
39
+ def perform_async(batch)
40
+ client_queue.push batch
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "lowkiq/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "lowkiq"
7
+ spec.version = Lowkiq::VERSION
8
+ spec.authors = ["Mikhail Kuzmin"]
9
+ spec.email = ["Mihail.Kuzmin@bia-tech.ru"]
10
+
11
+ spec.summary = %q{Lowkiq}
12
+ spec.description = %q{Lowkiq}
13
+ spec.homepage = "https://github.com/bia-technologies/lowkiq"
14
+
15
+ # Specify which files should be added to the gem when it is released.
16
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
+ `git ls-files -z`
19
+ .split("\x0")
20
+ .reject { |f| f.match(%r{^(spec|frontend|examples|doc)/}) }
21
+ .push('assets/app.js')
22
+ end
23
+ spec.bindir = "exe"
24
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ["lib"]
26
+
27
+ spec.add_dependency "redis", ">= 4.0.1", "< 5"
28
+ spec.add_dependency "connection_pool", "~> 2.2", ">= 2.2.2"
29
+ spec.add_dependency "rack", ">= 1.5.0"
30
+
31
+ spec.add_development_dependency "bundler", "~> 1.16"
32
+ spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "rspec", "~> 3.0"
34
+ spec.add_development_dependency "rspec-mocks", "~> 3.8"
35
+ spec.add_development_dependency "rack-test", "~> 1.1"
36
+ end
metadata ADDED
@@ -0,0 +1,206 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lowkiq
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mikhail Kuzmin
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-10-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redis
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 4.0.1
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: connection_pool
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.2.2
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.2.2
53
+ - !ruby/object:Gem::Dependency
54
+ name: rack
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.5.0
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.5.0
67
+ - !ruby/object:Gem::Dependency
68
+ name: bundler
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.16'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.16'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rake
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '10.0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '10.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '3.0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '3.0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: rspec-mocks
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '3.8'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.8'
123
+ - !ruby/object:Gem::Dependency
124
+ name: rack-test
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.1'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '1.1'
137
+ description: Lowkiq
138
+ email:
139
+ - Mihail.Kuzmin@bia-tech.ru
140
+ executables:
141
+ - lowkiq
142
+ extensions: []
143
+ extra_rdoc_files: []
144
+ files:
145
+ - ".gitignore"
146
+ - ".rspec"
147
+ - Gemfile
148
+ - Gemfile.lock
149
+ - LICENSE.md
150
+ - README.md
151
+ - Rakefile
152
+ - assets/app.js
153
+ - bin/console
154
+ - bin/setup
155
+ - deploy.md
156
+ - docker-compose.yml
157
+ - exe/lowkiq
158
+ - lib/lowkiq.rb
159
+ - lib/lowkiq/extend_tracker.rb
160
+ - lib/lowkiq/option_parser.rb
161
+ - lib/lowkiq/queue/actions.rb
162
+ - lib/lowkiq/queue/fetch.rb
163
+ - lib/lowkiq/queue/keys.rb
164
+ - lib/lowkiq/queue/marshal.rb
165
+ - lib/lowkiq/queue/queries.rb
166
+ - lib/lowkiq/queue/queue.rb
167
+ - lib/lowkiq/queue/queue_metrics.rb
168
+ - lib/lowkiq/queue/shard_metrics.rb
169
+ - lib/lowkiq/redis_info.rb
170
+ - lib/lowkiq/schedulers/lag.rb
171
+ - lib/lowkiq/schedulers/seq.rb
172
+ - lib/lowkiq/server.rb
173
+ - lib/lowkiq/shard_handler.rb
174
+ - lib/lowkiq/splitters/by_node.rb
175
+ - lib/lowkiq/splitters/default.rb
176
+ - lib/lowkiq/utils.rb
177
+ - lib/lowkiq/version.rb
178
+ - lib/lowkiq/web.rb
179
+ - lib/lowkiq/web/action.rb
180
+ - lib/lowkiq/web/api.rb
181
+ - lib/lowkiq/worker.rb
182
+ - lowkiq.gemspec
183
+ homepage: https://github.com/bia-technologies/lowkiq
184
+ licenses: []
185
+ metadata: {}
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ requirements: []
201
+ rubyforge_project:
202
+ rubygems_version: 2.7.7
203
+ signing_key:
204
+ specification_version: 4
205
+ summary: Lowkiq
206
+ test_files: []