chained_job 0.2.1 → 0.5.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/lib/chained_job/config.rb +4 -0
- data/lib/chained_job/middleware.rb +6 -1
- data/lib/chained_job/process.rb +21 -3
- data/lib/chained_job/store_job_arguments.rb +5 -1
- data/lib/chained_job/version.rb +1 -1
- metadata +8 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8dd16e4b32b2941483694d35cd08b943be16d52f6277d8037276533f5d63825
|
4
|
+
data.tar.gz: c082fbc66b7272971fac822d28a7eb45b68fed500094d085e5c7e1c877c375a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dc323a9997040b42a8dd15f787bbc0785a7410c52e3061e13b9c1013e4526d08d597563a6b41e5663f7cb0b8941eb653116856a569b4c80f36e03a5340db624
|
7
|
+
data.tar.gz: 7f3751cd2dbb44aa22646ed90434fb21e5a06e348cd575e0cbacc3525d705cab3ec7d6ebdfedd0694b21450f477813019eb590217ab7ebd4f1fc4cc59214cd2f
|
data/lib/chained_job/config.rb
CHANGED
@@ -12,6 +12,8 @@ module ChainedJob
|
|
12
12
|
:arguments_queue_expiration,
|
13
13
|
:around_start_chains,
|
14
14
|
:around_chain_process,
|
15
|
+
:around_array_of_job_arguments,
|
16
|
+
:after_worker_finished,
|
15
17
|
:debug,
|
16
18
|
:logger,
|
17
19
|
:redis,
|
@@ -26,6 +28,8 @@ module ChainedJob
|
|
26
28
|
|
27
29
|
self.around_start_chains = ->(_options, &block) { block.call }
|
28
30
|
self.around_chain_process = ->(_options, &block) { block.call }
|
31
|
+
self.around_array_of_job_arguments = ->(_options, &block) { block.call }
|
32
|
+
self.after_worker_finished = ->(_options) {}
|
29
33
|
|
30
34
|
self.debug = true
|
31
35
|
end
|
@@ -13,10 +13,15 @@ module ChainedJob
|
|
13
13
|
if worker_id
|
14
14
|
ChainedJob::Process.run(self, worker_id, tag)
|
15
15
|
else
|
16
|
-
ChainedJob::StartChains.run(self.class,
|
16
|
+
ChainedJob::StartChains.run(self.class, arguments_array, parallelism)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def arguments_array
|
21
|
+
options = { job_class: self.class }
|
22
|
+
ChainedJob.config.around_array_of_job_arguments.call(options) { array_of_job_arguments }
|
23
|
+
end
|
24
|
+
|
20
25
|
def array_of_job_arguments
|
21
26
|
raise NoMethodError, 'undefined method array_of_job_arguments'
|
22
27
|
end
|
data/lib/chained_job/process.rb
CHANGED
@@ -18,7 +18,7 @@ module ChainedJob
|
|
18
18
|
|
19
19
|
def run
|
20
20
|
with_hooks do
|
21
|
-
return
|
21
|
+
return finished_worker unless argument
|
22
22
|
|
23
23
|
job_instance.process(argument)
|
24
24
|
job_instance.class.perform_later(worker_id, job_tag)
|
@@ -32,7 +32,13 @@ module ChainedJob
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def options
|
35
|
-
{ job_class: job_instance.class, worker_id: worker_id }
|
35
|
+
@options ||= { job_class: job_instance.class, worker_id: worker_id }
|
36
|
+
end
|
37
|
+
|
38
|
+
def finished_worker
|
39
|
+
log_finished_worker
|
40
|
+
|
41
|
+
ChainedJob.config.after_worker_finished&.call(options)
|
36
42
|
end
|
37
43
|
|
38
44
|
def log_finished_worker
|
@@ -42,7 +48,19 @@ module ChainedJob
|
|
42
48
|
end
|
43
49
|
|
44
50
|
def argument
|
45
|
-
@argument ||=
|
51
|
+
@argument ||= deserialized_argument
|
52
|
+
end
|
53
|
+
|
54
|
+
def deserialized_argument
|
55
|
+
return unless serialized_argument
|
56
|
+
|
57
|
+
Marshal.load(serialized_argument)
|
58
|
+
end
|
59
|
+
|
60
|
+
def serialized_argument
|
61
|
+
return @serialized_argument if defined?(@serialized_argument)
|
62
|
+
|
63
|
+
@serialized_argument = ChainedJob.redis.lpop(redis_key)
|
46
64
|
end
|
47
65
|
|
48
66
|
def redis_key
|
@@ -20,7 +20,7 @@ module ChainedJob
|
|
20
20
|
set_tag_list
|
21
21
|
|
22
22
|
array_of_job_arguments.each_slice(config.arguments_batch_size) do |sublist|
|
23
|
-
ChainedJob.redis.rpush(redis_key, sublist)
|
23
|
+
ChainedJob.redis.rpush(redis_key, serialize(sublist))
|
24
24
|
end
|
25
25
|
|
26
26
|
ChainedJob.redis.expire(redis_key, config.arguments_queue_expiration)
|
@@ -44,6 +44,10 @@ module ChainedJob
|
|
44
44
|
@job_key ||= Helpers.job_key(job_class)
|
45
45
|
end
|
46
46
|
|
47
|
+
def serialize(arguments)
|
48
|
+
arguments.map { |argument| Marshal.dump(argument) }
|
49
|
+
end
|
50
|
+
|
47
51
|
def config
|
48
52
|
ChainedJob.config
|
49
53
|
end
|
data/lib/chained_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chained_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mantas Kūjalis
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: minitest
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,25 +53,10 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '12.0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: rubocop-vinted
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0.3'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0.3'
|
70
56
|
description: Chained job allows you to define an array of queued jobs that should
|
71
57
|
be run in sequence after the main job has been executed successfully.
|
72
58
|
email:
|
73
|
-
-
|
74
|
-
- titas@vinted.com
|
59
|
+
- backend@vinted.com
|
75
60
|
executables: []
|
76
61
|
extensions: []
|
77
62
|
extra_rdoc_files: []
|
@@ -104,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
89
|
- !ruby/object:Gem::Version
|
105
90
|
version: '0'
|
106
91
|
requirements: []
|
107
|
-
rubygems_version: 3.
|
92
|
+
rubygems_version: 3.1.4
|
108
93
|
signing_key:
|
109
94
|
specification_version: 4
|
110
95
|
summary: Chained job helper
|