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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17cdb6368062bd5a178c3152fcacb7d8d0e390206c220f76b6940ddd79f0ac31
4
- data.tar.gz: 46b6ac23e95ce8054799b4bae22c07b0375895274f69bdd494a9da882fc9e450
3
+ metadata.gz: 97231d250b03b74533a83cc66b69aafcab6422a55b83ad4a479d4898c00a2b9b
4
+ data.tar.gz: 6e29b0b370b9a201d10b3398fd1ed24a87efed091183a02cb29fea68625cf8fd
5
5
  SHA512:
6
- metadata.gz: a1d9f295b8b58a8412bba69dd4f162bbed17ce3a64d3543992af2397213db878a4f62953dfa1b9b888d2ffca41f7f56745015da6d78f791c553205d91f004377
7
- data.tar.gz: c834e85f721561e632cea9923000128b02ccc6d7a3a9e4c29e99301577a1ff45950760df4bf621c68c92550ddc59763d86ae109851b7d298e499d3ee736cd961
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.0)
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.3)
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.2.5)
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.0)
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.1.4
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 for worker wrapping
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
@@ -1,3 +1,3 @@
1
1
  module Lowkiq
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
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
- 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
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 server_wrapper
56
+ def middleware_wrapper(middlewares)
57
57
  null = -> (worker, batch, &block) { block.call }
58
- server_middlewares.reduce(null) do |wrapper, m|
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.0"
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.1
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-05-30 00:00:00.000000000 Z
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.0
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.0
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.3.11
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: []