faktory_worker_ruby 0.8.0 → 1.0.3
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 +5 -5
- data/Changes.md +26 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +23 -15
- data/README.md +8 -5
- data/faktory_worker_ruby.gemspec +4 -4
- data/lib/active_job/queue_adapters/faktory_adapter.rb +6 -2
- data/lib/faktory.rb +3 -1
- data/lib/faktory/batch.rb +178 -0
- data/lib/faktory/cli.rb +5 -0
- data/lib/faktory/client.rb +156 -34
- data/lib/faktory/connection.rb +1 -1
- data/lib/faktory/io.rb +51 -0
- data/lib/faktory/job.rb +47 -30
- data/lib/faktory/launcher.rb +10 -5
- data/lib/faktory/logging.rb +1 -1
- data/lib/faktory/manager.rb +3 -0
- data/lib/faktory/middleware/batch.rb +38 -0
- data/lib/faktory/mutate.rb +91 -0
- data/lib/faktory/processor.rb +6 -4
- data/lib/faktory/rails.rb +11 -1
- data/lib/faktory/testing.rb +2 -2
- data/lib/faktory/tracking.rb +41 -0
- data/lib/faktory/version.rb +1 -1
- metadata +20 -16
@@ -0,0 +1,41 @@
|
|
1
|
+
module Faktory
|
2
|
+
module Trackable
|
3
|
+
|
4
|
+
##
|
5
|
+
# Tracking allows a long-running Faktory job to report its progress:
|
6
|
+
#
|
7
|
+
# def perform(...)
|
8
|
+
# track_progress(10, "Calculating values")
|
9
|
+
# # do some work
|
10
|
+
#
|
11
|
+
# track_progress(20, "Sending emails")
|
12
|
+
# # do some more work
|
13
|
+
#
|
14
|
+
# track_progress(20, "Sending emails", reserve_until: 10.minutes.from_now)
|
15
|
+
# # do some more work
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# Note:
|
19
|
+
# 1. jobs should be small and fine-grained (and so fast) if possible.
|
20
|
+
# 2. tracking is useful for long-running jobs, tracking a fast job will only add overhead
|
21
|
+
# 3. tracking only works with a single job, use Batches to monitor a group of jobs
|
22
|
+
# 4. reserve_until allows a job to dynamically extend its reservation so it is not garbage collected by Faktory while running
|
23
|
+
# 5. you can only reserve up to 24 hours.
|
24
|
+
#
|
25
|
+
def track_progress(percent, desc=nil, reserve_until:nil)
|
26
|
+
hash = { 'jid' => jid, 'percent' => percent.to_i, 'desc' => desc }
|
27
|
+
hash["reserve_until"] = convert(reserve_until) if reserve_until
|
28
|
+
Faktory.server {|c| c.set_track(hash) }
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def convert(ts)
|
34
|
+
raise ArgumentError, "Timestamp in the past: #{ts}" if Time.now > ts
|
35
|
+
raise ArgumentError, "Timestamp too far in the future: #{ts}" if (Time.now + 86400) < ts
|
36
|
+
|
37
|
+
tsf = ts.to_f
|
38
|
+
Time.at(tsf).utc.iso8601
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/faktory/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faktory_worker_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '2.2'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.2.
|
22
|
+
version: 2.2.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,21 +29,21 @@ dependencies:
|
|
29
29
|
version: '2.2'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.2.
|
32
|
+
version: 2.2.2
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activejob
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 5.
|
39
|
+
version: 5.2.0
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 5.
|
46
|
+
version: 5.2.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,16 +76,16 @@ dependencies:
|
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '0'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '0'
|
89
89
|
description: Ruby worker for Faktory.
|
90
90
|
email:
|
91
91
|
- mike@contribsys.com
|
@@ -106,21 +106,26 @@ files:
|
|
106
106
|
- faktory_worker_ruby.gemspec
|
107
107
|
- lib/active_job/queue_adapters/faktory_adapter.rb
|
108
108
|
- lib/faktory.rb
|
109
|
+
- lib/faktory/batch.rb
|
109
110
|
- lib/faktory/cli.rb
|
110
111
|
- lib/faktory/client.rb
|
111
112
|
- lib/faktory/connection.rb
|
112
113
|
- lib/faktory/exception_handler.rb
|
113
114
|
- lib/faktory/fetch.rb
|
115
|
+
- lib/faktory/io.rb
|
114
116
|
- lib/faktory/job.rb
|
115
117
|
- lib/faktory/job_logger.rb
|
116
118
|
- lib/faktory/launcher.rb
|
117
119
|
- lib/faktory/logging.rb
|
118
120
|
- lib/faktory/manager.rb
|
121
|
+
- lib/faktory/middleware/batch.rb
|
119
122
|
- lib/faktory/middleware/chain.rb
|
120
123
|
- lib/faktory/middleware/i18n.rb
|
124
|
+
- lib/faktory/mutate.rb
|
121
125
|
- lib/faktory/processor.rb
|
122
126
|
- lib/faktory/rails.rb
|
123
127
|
- lib/faktory/testing.rb
|
128
|
+
- lib/faktory/tracking.rb
|
124
129
|
- lib/faktory/util.rb
|
125
130
|
- lib/faktory/version.rb
|
126
131
|
- lib/faktory_worker_ruby.rb
|
@@ -128,7 +133,7 @@ homepage: https://github.com/contribsys/faktory_worker_ruby
|
|
128
133
|
licenses:
|
129
134
|
- LGPL-3.0
|
130
135
|
metadata: {}
|
131
|
-
post_install_message:
|
136
|
+
post_install_message:
|
132
137
|
rdoc_options: []
|
133
138
|
require_paths:
|
134
139
|
- lib
|
@@ -136,16 +141,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
141
|
requirements:
|
137
142
|
- - ">="
|
138
143
|
- !ruby/object:Gem::Version
|
139
|
-
version: 2.
|
144
|
+
version: 2.5.0
|
140
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
146
|
requirements:
|
142
147
|
- - ">="
|
143
148
|
- !ruby/object:Gem::Version
|
144
149
|
version: '0'
|
145
150
|
requirements: []
|
146
|
-
|
147
|
-
|
148
|
-
signing_key:
|
151
|
+
rubygems_version: 3.2.8
|
152
|
+
signing_key:
|
149
153
|
specification_version: 4
|
150
154
|
summary: Ruby worker for Faktory
|
151
155
|
test_files: []
|