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.
@@ -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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Faktory
3
- VERSION = "0.8.0"
3
+ VERSION = "1.0.3"
4
4
  end
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.8.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: 2018-12-20 00:00:00.000000000 Z
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.1
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.1
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.1.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.1.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: '12'
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: '12'
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.2.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
- rubyforge_project:
147
- rubygems_version: 2.6.13
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: []