sidekiq-paquet 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 2d30b4621c71e1966308bbe0a68f10aeb776a332
4
- data.tar.gz: 13476e7dbafc931566f3e9cd6d2861fa1175583f
3
+ metadata.gz: 2a8cb3d7307887cc9c34999050e7460e6515f381
4
+ data.tar.gz: 6097a9b12ffc1546b784c2b519d5687da3017418
5
5
  SHA512:
6
- metadata.gz: d17cefb200e17b149424f2c1403b053e11c23da4c016e670b445f9108da393cc081c9281a91cb4a72faa320c5fd51fc4641d2579e0210daacae43367a7e9a525
7
- data.tar.gz: 46be4131522f343c047226c2ae9b3b06082590a2054ac98cfd11bec473f2e4de72d1172fc3a532998165e3ff0001ad61e2a7fa52b674c9d00535e77b25d31ee8
6
+ metadata.gz: dc9e033a09c25ef09aae43065f9b92329acf33225c640d2737b4ef0dcc112681c5c436938206c0b67c4864d43ad8479a6533b78295ec05b8c1978cf60f216cc9
7
+ data.tar.gz: c970fde44941632e1d115dd88a5bbdfaf65e44f005ca13bcf356305d042283a705ca9ee1df46a5bd585de6a18b3fef92762a00c1b8ef5ab1b07e03fc0c9920c4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Sidekiq::Paquet
2
2
 
3
- Instead of enqueueing and processing jobs one at a time, enqueue them one by one process them in bulk.
3
+ Instead of enqueueing and processing jobs one at a time, enqueue them one by one and process them in bulk.
4
4
  Useful for grouping background API calls or intensive database inserts coming from multiple sources.
5
5
 
6
6
  ## Installation
@@ -9,7 +9,7 @@ Useful for grouping background API calls or intensive database inserts coming fr
9
9
  gem install 'sidekiq-paquet'
10
10
  ```
11
11
 
12
- sidekiq-bulk requires Sidekiq 4+. If you're using Sidekiq < 4, take a look at [sidekiq-grouping](https://github.com/gzigzigzeo/sidekiq-grouping/) for similar features.
12
+ sidekiq-bulk requires Sidekiq 4+.
13
13
 
14
14
  ## Usage
15
15
 
@@ -21,7 +21,7 @@ class ElasticIndexerWorker
21
21
 
22
22
  sidekiq_options bulk: true, bulk_size: 100
23
23
 
24
- def perform(values)
24
+ def perform(*values)
25
25
  # Perform work with the array of values
26
26
  end
27
27
  end
@@ -46,6 +46,8 @@ the worker instance will receive these values as a single argument
46
46
  ]
47
47
  ```
48
48
 
49
+ Every time polling happens, `sidekiq-paquet` will try to process all your workers marked for bulk. If you want to limit the time between two polling per worker, you can pass the `bulk_minimum_interval` option to sidekiq options.
50
+
49
51
  ## Configuration
50
52
 
51
53
  You can change global configuration by modifying the `Sidekiq::Paquet.options` hash.
@@ -8,19 +8,22 @@ module Sidekiq
8
8
 
9
9
  Sidekiq.redis do |conn|
10
10
  conn.multi do
11
- conn.sadd('bulks'.freeze, worker_name)
11
+ conn.zadd('bulks'.freeze, 0, worker_name, nx: true)
12
12
  conn.rpush("bulk:#{worker_name}", Sidekiq.dump_json(args))
13
13
  end
14
14
  end
15
15
  end
16
16
 
17
17
  def self.enqueue_jobs
18
+ now = Time.now.to_f
18
19
  Sidekiq.redis do |conn|
19
- workers = conn.smembers('bulks'.freeze)
20
+ workers = conn.zrangebyscore('bulks'.freeze, '-inf', now)
20
21
 
21
22
  workers.each do |worker|
22
23
  klass = worker.constantize
23
24
  opts = klass.get_sidekiq_options
25
+ min_interval = opts['bulk_minimum_interval'.freeze]
26
+
24
27
  items = conn.lrange("bulk:#{worker}", 0, -1)
25
28
  items.map! { |i| Sidekiq.load_json(i) }
26
29
 
@@ -33,6 +36,7 @@ module Sidekiq
33
36
  end
34
37
 
35
38
  conn.ltrim("bulk:#{worker}", items.size, -1)
39
+ conn.zadd('bulks'.freeze, now + min_interval, worker) if min_interval
36
40
  end
37
41
  end
38
42
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Paquet
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-paquet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ccocchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-26 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -107,9 +107,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.5
110
+ rubygems_version: 2.5.1
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Bulk processing for sidekiq 4+
114
114
  test_files: []
115
- has_rdoc: