upperkut 0.8.0 → 0.8.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 +4 -4
- data/CHANGELOG.md +2 -1
- data/Gemfile.lock +1 -1
- data/lib/upperkut/strategies/buffered_queue.rb +4 -2
- data/lib/upperkut/strategies/priority_queue.rb +4 -2
- data/lib/upperkut/strategies/scheduled_queue.rb +23 -22
- data/lib/upperkut/util.rb +17 -0
- data/lib/upperkut/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b61a3728cde5e295de277abc22836653fc332640843bce69f3ca3832f830a1ec
|
4
|
+
data.tar.gz: f781b92bd8923e67e3f26a207904ee4b80bf54104bc98364559d4924a5b3c5e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 961de37230a1db0d1c8162b9a7e25f69715f647f154b3b36e66aef2568d0620235fbeaa5b92bcfefdb5189bcee0b1de98220e0db6811ee7dc3477114bdea3758
|
7
|
+
data.tar.gz: f509c2623813dd4132b1df11dc220de1082f441078a5ddc96b753fec9d47c87ea62851af45dd4257c60578e83b0647a36ef6a8f1a643a5748cbf58751206403d
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -28,9 +28,13 @@ module Upperkut
|
|
28
28
|
|
29
29
|
def initialize(worker, options = {})
|
30
30
|
@options = options
|
31
|
-
|
32
|
-
@redis_pool = setup_redis_pool
|
31
|
+
@redis_options = @options.fetch(:redis, {})
|
33
32
|
@worker = worker
|
33
|
+
|
34
|
+
@batch_size = @options.fetch(
|
35
|
+
:batch_size,
|
36
|
+
Integer(ENV['UPPERKUT_BATCH_SIZE'] || 1000)
|
37
|
+
)
|
34
38
|
end
|
35
39
|
|
36
40
|
def push_items(items = [])
|
@@ -82,13 +86,12 @@ module Upperkut
|
|
82
86
|
|
83
87
|
private
|
84
88
|
|
85
|
-
def
|
86
|
-
@
|
89
|
+
def key
|
90
|
+
"upperkut:queued:#{to_underscore(@worker.name)}"
|
91
|
+
end
|
87
92
|
|
88
|
-
|
89
|
-
|
90
|
-
Integer(ENV['UPPERKUT_BATCH_SIZE'] || 1000)
|
91
|
-
)
|
93
|
+
def ensure_timestamp_attr(item)
|
94
|
+
item['timestamp'] = Time.now.utc.to_i unless item.key?('timestamp')
|
92
95
|
end
|
93
96
|
|
94
97
|
def pop_values(redis_client, args)
|
@@ -123,26 +126,24 @@ module Upperkut
|
|
123
126
|
now_timestamp - job['timestamp'].to_f
|
124
127
|
end
|
125
128
|
|
126
|
-
def setup_redis_pool
|
127
|
-
return @redis_options if @redis_options.is_a?(ConnectionPool)
|
128
|
-
|
129
|
-
RedisPool.new(options.fetch(:redis, {})).create
|
130
|
-
end
|
131
|
-
|
132
129
|
def redis
|
133
130
|
raise ArgumentError, 'requires a block' unless block_given?
|
134
131
|
|
135
|
-
|
136
|
-
|
132
|
+
retry_block do
|
133
|
+
redis_pool.with do |conn|
|
134
|
+
yield conn
|
135
|
+
end
|
137
136
|
end
|
138
137
|
end
|
139
138
|
|
140
|
-
def
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
139
|
+
def redis_pool
|
140
|
+
@redis_pool ||= begin
|
141
|
+
if @redis_options.is_a?(ConnectionPool)
|
142
|
+
@redis_options
|
143
|
+
else
|
144
|
+
RedisPool.new(@redis_options).create
|
145
|
+
end
|
146
|
+
end
|
146
147
|
end
|
147
148
|
end
|
148
149
|
end
|
data/lib/upperkut/util.rb
CHANGED
@@ -36,5 +36,22 @@ module Upperkut
|
|
36
36
|
memo << Item.from_json(item) if item
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
def retry_block(retries_limit = 3, base_sleep = 2)
|
41
|
+
retries = 0
|
42
|
+
|
43
|
+
begin
|
44
|
+
yield
|
45
|
+
rescue StandardError => err
|
46
|
+
if retries < retries_limit
|
47
|
+
retries += 1
|
48
|
+
sleep_time = base_sleep**retries
|
49
|
+
Kernel.sleep(sleep_time)
|
50
|
+
retry
|
51
|
+
end
|
52
|
+
|
53
|
+
raise err
|
54
|
+
end
|
55
|
+
end
|
39
56
|
end
|
40
57
|
end
|
data/lib/upperkut/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upperkut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Sousa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|