lowkiq 1.2.1 → 1.2.2
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/Gemfile.lock +5 -5
- data/README.md +9 -1
- data/lib/lowkiq/version.rb +1 -1
- data/lib/lowkiq/worker.rb +11 -10
- data/lib/lowkiq.rb +12 -3
- data/lowkiq.gemspec +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97231d250b03b74533a83cc66b69aafcab6422a55b83ad4a479d4898c00a2b9b
|
4
|
+
data.tar.gz: 6e29b0b370b9a201d10b3398fd1ed24a87efed091183a02cb29fea68625cf8fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4275cf8a1235c9c5f527b40b011edaea72bebda8493128a8029c35c5cd166288ffb01187e39d6a301b132d27b3cd6d32f7b9f9cfec9d6fa0e3edfe943eaa0da2
|
7
|
+
data.tar.gz: 46b65d96ffbc183fa47e85b487f88fe0d9aee256eb379be9fe20fcdc54c0239dcd4fecc2873c14a460024cb3f764c4a1797805b77c7b8d2f1078a40f14db404c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lowkiq (1.1
|
4
|
+
lowkiq (1.2.1)
|
5
5
|
connection_pool (~> 2.2, >= 2.2.2)
|
6
6
|
rack (>= 1.5.0)
|
7
7
|
redis (>= 4.0.1, < 5)
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
specs:
|
12
12
|
byebug (11.1.3)
|
13
13
|
coderay (1.1.3)
|
14
|
-
connection_pool (2.2.
|
14
|
+
connection_pool (2.2.5)
|
15
15
|
diff-lcs (1.3)
|
16
16
|
method_source (1.0.0)
|
17
17
|
pry (0.13.1)
|
@@ -24,7 +24,7 @@ GEM
|
|
24
24
|
rack-test (1.1.0)
|
25
25
|
rack (>= 1.0, < 3)
|
26
26
|
rake (12.3.3)
|
27
|
-
redis (4.
|
27
|
+
redis (4.7.1)
|
28
28
|
rspec (3.9.0)
|
29
29
|
rspec-core (~> 3.9.0)
|
30
30
|
rspec-expectations (~> 3.9.0)
|
@@ -43,7 +43,7 @@ PLATFORMS
|
|
43
43
|
ruby
|
44
44
|
|
45
45
|
DEPENDENCIES
|
46
|
-
bundler (~> 2.1
|
46
|
+
bundler (~> 2.1)
|
47
47
|
lowkiq!
|
48
48
|
pry-byebug (~> 3.9.0)
|
49
49
|
rack-test (~> 1.1)
|
@@ -52,4 +52,4 @@ DEPENDENCIES
|
|
52
52
|
rspec-mocks (~> 3.8)
|
53
53
|
|
54
54
|
BUNDLED WITH
|
55
|
-
2.
|
55
|
+
2.2.22
|
data/README.md
CHANGED
@@ -293,7 +293,8 @@ Options and their default values are:
|
|
293
293
|
+ `Lowkiq.redis = ->() { Redis.new url: ENV.fetch('REDIS_URL') }` - redis connection options
|
294
294
|
+ `Lowkiq.client_pool_size = 5` - redis pool size for queueing jobs
|
295
295
|
+ `Lowkiq.pool_timeout = 5` - client and server redis pool timeout
|
296
|
-
+ `Lowkiq.server_middlewares = []` - a middleware list, used
|
296
|
+
+ `Lowkiq.server_middlewares = []` - a middleware list, used when job is processed
|
297
|
+
+ `Lowkiq.client_middlewares = []` - a middleware list, used when job is enqueued
|
297
298
|
+ `Lowkiq.on_server_init = ->() {}` - a lambda is being executed when server inits
|
298
299
|
+ `Lowkiq.build_scheduler = ->() { Lowkiq.build_lag_scheduler }` is a scheduler
|
299
300
|
+ `Lowkiq.build_splitter = ->() { Lowkiq.build_default_splitter }` is a splitter
|
@@ -322,6 +323,13 @@ Lowkiq.server_middlewares << -> (worker, batch, &block) do
|
|
322
323
|
raise e
|
323
324
|
end
|
324
325
|
end
|
326
|
+
|
327
|
+
Lowkiq.client_middlewares << -> (worker, batch, &block) do
|
328
|
+
$logger.info "Enqueueing job for #{worker} #{batch}"
|
329
|
+
block.call
|
330
|
+
$logger.info "Enqueued job for #{worker} #{batch}"
|
331
|
+
end
|
332
|
+
|
325
333
|
```
|
326
334
|
|
327
335
|
## Performance
|
data/lib/lowkiq/version.rb
CHANGED
data/lib/lowkiq/worker.rb
CHANGED
@@ -3,15 +3,15 @@ module Lowkiq
|
|
3
3
|
attr_accessor :shards_count,
|
4
4
|
:batch_size,
|
5
5
|
:max_retry_count,
|
6
|
-
:queue_name
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
:queue_name
|
7
|
+
|
8
|
+
def self.extended(mod)
|
9
|
+
super
|
10
|
+
mod.shards_count = 5
|
11
|
+
mod.batch_size = 1
|
12
|
+
mod.max_retry_count = 25
|
13
|
+
mod.queue_name = mod.name
|
14
|
+
end
|
15
15
|
|
16
16
|
# i.e. 15, 16, 31, 96, 271, ... seconds + a random amount of time
|
17
17
|
def retry_in(retry_count)
|
@@ -39,7 +39,8 @@ module Lowkiq
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def perform_async(batch)
|
42
|
-
client_queue.push batch
|
42
|
+
Lowkiq.client_wrapper.call(self, batch) {client_queue.push batch}
|
43
43
|
end
|
44
|
+
|
44
45
|
end
|
45
46
|
end
|
data/lib/lowkiq.rb
CHANGED
@@ -38,7 +38,7 @@ module Lowkiq
|
|
38
38
|
class << self
|
39
39
|
attr_accessor :poll_interval, :threads_per_node,
|
40
40
|
:redis, :client_pool_size, :pool_timeout,
|
41
|
-
:server_middlewares, :on_server_init,
|
41
|
+
:server_middlewares, :client_middlewares, :on_server_init,
|
42
42
|
:build_scheduler, :build_splitter,
|
43
43
|
:last_words,
|
44
44
|
:dump_payload, :load_payload,
|
@@ -53,9 +53,9 @@ module Lowkiq
|
|
53
53
|
@client_redis_pool ||= ConnectionPool.new(size: client_pool_size, timeout: pool_timeout, &redis)
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
56
|
+
def middleware_wrapper(middlewares)
|
57
57
|
null = -> (worker, batch, &block) { block.call }
|
58
|
-
|
58
|
+
middlewares.reduce(null) do |wrapper, m|
|
59
59
|
-> (worker, batch, &block) do
|
60
60
|
wrapper.call worker, batch do
|
61
61
|
m.call worker, batch, &block
|
@@ -64,6 +64,14 @@ module Lowkiq
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
def client_wrapper
|
68
|
+
@client_wrapper ||= self.middleware_wrapper(self.client_middlewares)
|
69
|
+
end
|
70
|
+
|
71
|
+
def server_wrapper
|
72
|
+
@server_wrapper ||= self.middleware_wrapper(self.server_middlewares)
|
73
|
+
end
|
74
|
+
|
67
75
|
def shard_handlers
|
68
76
|
self.workers.flat_map do |w|
|
69
77
|
ShardHandler.build_many w, self.server_wrapper
|
@@ -103,6 +111,7 @@ module Lowkiq
|
|
103
111
|
self.client_pool_size = 5
|
104
112
|
self.pool_timeout = 5
|
105
113
|
self.server_middlewares = []
|
114
|
+
self.client_middlewares = []
|
106
115
|
self.on_server_init = ->() {}
|
107
116
|
self.build_scheduler = ->() { Lowkiq.build_lag_scheduler }
|
108
117
|
self.build_splitter = ->() { Lowkiq.build_default_splitter }
|
data/lowkiq.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_dependency "connection_pool", "~> 2.2", ">= 2.2.2"
|
30
30
|
spec.add_dependency "rack", ">= 1.5.0"
|
31
31
|
|
32
|
-
spec.add_development_dependency "bundler", "~> 2.1
|
32
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
33
33
|
spec.add_development_dependency "rake", "~> 12.3.0"
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
35
35
|
spec.add_development_dependency "rspec-mocks", "~> 3.8"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lowkiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikhail Kuzmin
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -70,14 +70,14 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - "~>"
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: 2.1
|
73
|
+
version: '2.1'
|
74
74
|
type: :development
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
78
|
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version: 2.1
|
80
|
+
version: '2.1'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: rake
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,7 +200,7 @@ licenses:
|
|
200
200
|
- LGPL
|
201
201
|
- EULA
|
202
202
|
metadata: {}
|
203
|
-
post_install_message:
|
203
|
+
post_install_message:
|
204
204
|
rdoc_options: []
|
205
205
|
require_paths:
|
206
206
|
- lib
|
@@ -215,8 +215,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
215
|
- !ruby/object:Gem::Version
|
216
216
|
version: '0'
|
217
217
|
requirements: []
|
218
|
-
rubygems_version: 3.
|
219
|
-
signing_key:
|
218
|
+
rubygems_version: 3.2.22
|
219
|
+
signing_key:
|
220
220
|
specification_version: 4
|
221
221
|
summary: Lowkiq
|
222
222
|
test_files: []
|