parallel_workforce 2.0.0 → 3.0.0
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/.rubocop_parallel_workforce.yml +3 -9
- data/Gemfile.lock +3 -1
- data/lib/parallel_workforce/job/active_job.rb +6 -3
- data/lib/parallel_workforce/job/active_job_rails.rb +3 -5
- data/lib/parallel_workforce/job/sidekiq.rb +4 -3
- data/lib/parallel_workforce/job/sidekiq_rails.rb +3 -5
- data/lib/parallel_workforce/job/util/job_helper.rb +60 -0
- data/lib/parallel_workforce/requires.rb +1 -0
- data/lib/parallel_workforce/version.rb +1 -1
- data/parallel_workforce.gemspec +1 -0
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e38b7ae0d29c7bef029f3188bfaa9e425ce7c0927a3785b01dc760f81c089ca
|
4
|
+
data.tar.gz: 4f29cb1e4de7497342d822f528597a42b3462feb8f0ebcab9eddbed2528e1224
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8e78436dadff0af8d50c3b7400f4633374c85abaa790a8148866c4e3b2c2620f4ffa001b6fac0f7ed0257658ad2a836995cc63bb2c48f8a2f6cfb768976baaa
|
7
|
+
data.tar.gz: 242fa4f95c27ca8f9a32b97954d7e5d86022dc44815b8d459023df45a4965a23a0c0f199e5d471993943762c5d5e0e6ad27d8f747cdf6ec6c11bbe3ca45a50b8
|
@@ -42,6 +42,9 @@ RSpec/DescribedClass:
|
|
42
42
|
# RSpec/VerifiedDoubles:
|
43
43
|
# Enabled: true
|
44
44
|
|
45
|
+
Layout/FirstParameterIndentation:
|
46
|
+
Enabled: false
|
47
|
+
|
45
48
|
Layout/AlignHash:
|
46
49
|
Enabled: false
|
47
50
|
|
@@ -135,15 +138,6 @@ Style/GuardClause:
|
|
135
138
|
Style/IfUnlessModifier:
|
136
139
|
Enabled: false
|
137
140
|
|
138
|
-
Layout/IndentFirstArgument:
|
139
|
-
Enabled: false
|
140
|
-
|
141
|
-
Naming/RescuedExceptionsVariableName:
|
142
|
-
Enabled: false
|
143
|
-
|
144
|
-
Layout/IndentFirstArrayElement:
|
145
|
-
EnforcedStyle: consistent
|
146
|
-
|
147
141
|
Layout/MultilineOperationIndentation:
|
148
142
|
Enabled: true
|
149
143
|
EnforcedStyle: indented
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
parallel_workforce (
|
4
|
+
parallel_workforce (3.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -146,6 +146,7 @@ GEM
|
|
146
146
|
sprockets (>= 3.0.0)
|
147
147
|
thor (0.20.3)
|
148
148
|
thread_safe (0.3.6)
|
149
|
+
timecop (0.9.4)
|
149
150
|
tzinfo (1.2.5)
|
150
151
|
thread_safe (~> 0.1)
|
151
152
|
unicode-display_width (1.4.1)
|
@@ -164,6 +165,7 @@ DEPENDENCIES
|
|
164
165
|
rubocop (~> 0.65)
|
165
166
|
rubocop-rspec (~> 1.32)
|
166
167
|
sidekiq (~> 4.0)
|
168
|
+
timecop (~> 0.9)
|
167
169
|
|
168
170
|
BUNDLED WITH
|
169
171
|
1.17.3
|
@@ -1,11 +1,14 @@
|
|
1
1
|
module ParallelWorkforce
|
2
2
|
module Job
|
3
|
-
class ActiveJob < ActiveJob::Base
|
3
|
+
class ActiveJob < ::ActiveJob::Base
|
4
|
+
include ParallelWorkforce::Job::Util::JobHelper
|
5
|
+
|
4
6
|
discard_on Exception if defined?(discard_on)
|
5
7
|
|
6
8
|
class << self
|
7
9
|
def enqueue_actor(actor_class_name:, result_key:, index:, server_revision:, serialized_actor_args:)
|
8
|
-
|
10
|
+
enqueue_actor_job(
|
11
|
+
:perform_later,
|
9
12
|
actor_class_name: actor_class_name,
|
10
13
|
result_key: result_key,
|
11
14
|
index: index,
|
@@ -16,7 +19,7 @@ module ParallelWorkforce
|
|
16
19
|
end
|
17
20
|
|
18
21
|
def perform(args)
|
19
|
-
|
22
|
+
invoke_performer(args)
|
20
23
|
end
|
21
24
|
end
|
22
25
|
end
|
@@ -3,7 +3,8 @@ module ParallelWorkforce
|
|
3
3
|
class ActiveJobRails < ParallelWorkforce::Job::ActiveJob
|
4
4
|
class << self
|
5
5
|
def enqueue_actor(actor_class_name:, result_key:, index:, server_revision:, serialized_actor_args:)
|
6
|
-
|
6
|
+
enqueue_actor_job(
|
7
|
+
:perform_later,
|
7
8
|
actor_class_name: actor_class_name,
|
8
9
|
result_key: result_key,
|
9
10
|
index: index,
|
@@ -15,10 +16,7 @@ module ParallelWorkforce
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def perform(args)
|
18
|
-
args
|
19
|
-
Time.use_zone(args.delete(:time_zone_name)) do
|
20
|
-
ParallelWorkforce::Job::Util::Performer.new(**args).perform
|
21
|
-
end
|
19
|
+
invoke_performer_with_time_zone_name(args)
|
22
20
|
end
|
23
21
|
end
|
24
22
|
end
|
@@ -2,12 +2,14 @@ module ParallelWorkforce
|
|
2
2
|
module Job
|
3
3
|
class Sidekiq
|
4
4
|
include ::Sidekiq::Worker
|
5
|
+
include ParallelWorkforce::Job::Util::JobHelper
|
5
6
|
|
6
7
|
sidekiq_options retry: false
|
7
8
|
|
8
9
|
class << self
|
9
10
|
def enqueue_actor(actor_class_name:, result_key:, index:, server_revision:, serialized_actor_args:)
|
10
|
-
|
11
|
+
enqueue_actor_job(
|
12
|
+
:perform_async,
|
11
13
|
actor_class_name: actor_class_name,
|
12
14
|
result_key: result_key,
|
13
15
|
index: index,
|
@@ -18,8 +20,7 @@ module ParallelWorkforce
|
|
18
20
|
end
|
19
21
|
|
20
22
|
def perform(args)
|
21
|
-
args
|
22
|
-
ParallelWorkforce::Job::Util::Performer.new(**args).perform
|
23
|
+
invoke_performer(args)
|
23
24
|
end
|
24
25
|
end
|
25
26
|
end
|
@@ -3,7 +3,8 @@ module ParallelWorkforce
|
|
3
3
|
class SidekiqRails < ParallelWorkforce::Job::Sidekiq
|
4
4
|
class << self
|
5
5
|
def enqueue_actor(actor_class_name:, result_key:, index:, server_revision:, serialized_actor_args:)
|
6
|
-
|
6
|
+
enqueue_actor_job(
|
7
|
+
:perform_async,
|
7
8
|
actor_class_name: actor_class_name,
|
8
9
|
result_key: result_key,
|
9
10
|
index: index,
|
@@ -15,10 +16,7 @@ module ParallelWorkforce
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def perform(args)
|
18
|
-
args
|
19
|
-
Time.use_zone(args.delete(:time_zone_name)) do
|
20
|
-
ParallelWorkforce::Job::Util::Performer.new(**args).perform
|
21
|
-
end
|
19
|
+
invoke_performer_with_time_zone_name(args)
|
22
20
|
end
|
23
21
|
end
|
24
22
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module ParallelWorkforce
|
2
|
+
module Job
|
3
|
+
module Util
|
4
|
+
module JobHelper
|
5
|
+
def self.included(klass)
|
6
|
+
klass.extend(ClassMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def build_serialized_actor_args_key(result_key, index)
|
11
|
+
"#{result_key}:#{index}:serialized-actor-args"
|
12
|
+
end
|
13
|
+
|
14
|
+
def enqueue_actor_job(enqueue_method, **kwargs)
|
15
|
+
serialized_actor_args = kwargs.delete(:serialized_actor_args)
|
16
|
+
|
17
|
+
::ParallelWorkforce.configuration.redis_connector.with do |redis|
|
18
|
+
redis.setex(
|
19
|
+
build_serialized_actor_args_key(kwargs[:result_key], kwargs[:index]),
|
20
|
+
::ParallelWorkforce.configuration.job_key_expiration,
|
21
|
+
serialized_actor_args,
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
send(
|
26
|
+
enqueue_method,
|
27
|
+
**kwargs,
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def invoke_performer(args)
|
33
|
+
args.transform_keys!(&:to_sym)
|
34
|
+
|
35
|
+
serialized_actor_args = ParallelWorkforce.configuration.redis_connector.with do |redis|
|
36
|
+
serialized_actor_args_key = self.class.build_serialized_actor_args_key(args[:result_key], args[:index])
|
37
|
+
|
38
|
+
redis.getset(serialized_actor_args_key, nil).tap do
|
39
|
+
redis.del(serialized_actor_args_key)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
raise "Unable to locate serialized data required for Performer" if serialized_actor_args.nil?
|
44
|
+
|
45
|
+
args[:serialized_actor_args] = serialized_actor_args
|
46
|
+
|
47
|
+
ParallelWorkforce::Job::Util::Performer.new(**args).perform
|
48
|
+
end
|
49
|
+
|
50
|
+
def invoke_performer_with_time_zone_name(args)
|
51
|
+
args.transform_keys!(&:to_sym)
|
52
|
+
|
53
|
+
Time.use_zone(args.delete(:time_zone_name)) do
|
54
|
+
invoke_performer(args)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -2,6 +2,7 @@ require_relative "version"
|
|
2
2
|
require_relative "executor"
|
3
3
|
require_relative "configuration"
|
4
4
|
require_relative "job/util/performer"
|
5
|
+
require_relative "job/util/job_helper"
|
5
6
|
require_relative "redis_connector/redis_pool"
|
6
7
|
require_relative "revision_builder/files_hash"
|
7
8
|
require_relative "serializer/marshal"
|
data/parallel_workforce.gemspec
CHANGED
@@ -44,5 +44,6 @@ Gem::Specification.new do |spec|
|
|
44
44
|
spec.add_development_dependency "rubocop", "~> 0.65"
|
45
45
|
spec.add_development_dependency "rubocop-rspec", "~> 1.32"
|
46
46
|
spec.add_development_dependency "sidekiq", "~> 4.0"
|
47
|
+
spec.add_development_dependency "timecop", "~> 0.9"
|
47
48
|
end
|
48
49
|
# rubocop:enable Metrics/BlockLength
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel_workforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Pearce
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '4.0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: timecop
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.9'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.9'
|
139
153
|
description: Simplify parallel code execution into workers.
|
140
154
|
email:
|
141
155
|
- michael.p@enjoy.com
|
@@ -163,6 +177,7 @@ files:
|
|
163
177
|
- lib/parallel_workforce/job/active_job_rails.rb
|
164
178
|
- lib/parallel_workforce/job/sidekiq.rb
|
165
179
|
- lib/parallel_workforce/job/sidekiq_rails.rb
|
180
|
+
- lib/parallel_workforce/job/util/job_helper.rb
|
166
181
|
- lib/parallel_workforce/job/util/performer.rb
|
167
182
|
- lib/parallel_workforce/redis_connector/redis_pool.rb
|
168
183
|
- lib/parallel_workforce/redis_connector/sidekiq_redis_pool.rb
|
@@ -194,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
209
|
- !ruby/object:Gem::Version
|
195
210
|
version: '0'
|
196
211
|
requirements: []
|
197
|
-
rubygems_version: 3.0.
|
212
|
+
rubygems_version: 3.0.9
|
198
213
|
signing_key:
|
199
214
|
specification_version: 4
|
200
215
|
summary: Simplify parallel code execution into workers
|