lowkiq 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: []