resque-igo 1.12.7 → 1.12.8
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.
- data/HISTORY.md +8 -0
- data/README.markdown +7 -0
- data/Rakefile +0 -1
- data/lib/resque/tasks.rb +4 -1
- data/lib/resque/version.rb +1 -1
- data/lib/resque/worker.rb +17 -4
- data/test/job_hooks_test.rb +1 -1
- data/test/job_plugins_test.rb +1 -1
- data/test/plugin_test.rb +1 -1
- data/test/resque-web_test.rb +1 -1
- data/test/resque_test.rb +1 -1
- data/test/test_helper.rb +15 -4
- data/test/worker_test.rb +18 -1
- metadata +4 -4
data/HISTORY.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 1.12.0 (2011-02-03)
|
|
2
|
+
|
|
3
|
+
* Added pidfile writing from `rake resque:work`
|
|
4
|
+
* Added Worker#pid method
|
|
5
|
+
* Bugfix: Errors in failure backend are rescue'd
|
|
6
|
+
* Bugfix: Non-working workers no longer counted in "working" count
|
|
7
|
+
* Bugfix: Don't think resque-web is a worker
|
|
8
|
+
|
|
1
9
|
## 1.11.0 (2010-08-23)
|
|
2
10
|
|
|
3
11
|
* Web UI: Group /workers page by hostnames
|
data/README.markdown
CHANGED
|
@@ -295,6 +295,13 @@ variable.
|
|
|
295
295
|
|
|
296
296
|
$ VVERBOSE=1 QUEUE=file_serve rake environment resque:work
|
|
297
297
|
|
|
298
|
+
### Process IDs (PIDs)
|
|
299
|
+
|
|
300
|
+
There are scenarios where it's helpful to record the PID of a resque
|
|
301
|
+
worker process. Use the PIDFILE option for easy access to the PID:
|
|
302
|
+
|
|
303
|
+
$ PIDFILE=./resque.pid QUEUE=file_serve rake environment resque:work
|
|
304
|
+
|
|
298
305
|
|
|
299
306
|
### Priorities and Queue Lists
|
|
300
307
|
|
data/Rakefile
CHANGED
data/lib/resque/tasks.rb
CHANGED
|
@@ -8,7 +8,6 @@ namespace :resque do
|
|
|
8
8
|
task :work => :setup do
|
|
9
9
|
require 'resque'
|
|
10
10
|
|
|
11
|
-
worker = nil
|
|
12
11
|
queues = (ENV['QUEUES'] || ENV['QUEUE']).to_s.split(',')
|
|
13
12
|
|
|
14
13
|
begin
|
|
@@ -19,6 +18,10 @@ namespace :resque do
|
|
|
19
18
|
abort "set QUEUE env var, e.g. $ QUEUE=critical,high rake resque:work"
|
|
20
19
|
end
|
|
21
20
|
|
|
21
|
+
if ENV['PIDFILE']
|
|
22
|
+
File.open(ENV['PIDFILE'], 'w') { |f| f << Process.pid.to_s }
|
|
23
|
+
end
|
|
24
|
+
|
|
22
25
|
worker.log "Starting worker #{worker}"
|
|
23
26
|
|
|
24
27
|
worker.work(ENV['INTERVAL'] || 5) # interval, will block
|
data/lib/resque/version.rb
CHANGED
data/lib/resque/worker.rb
CHANGED
|
@@ -68,7 +68,7 @@ module Resque
|
|
|
68
68
|
# in alphabetical order. Queues can be dynamically added or
|
|
69
69
|
# removed without needing to restart workers using this method.
|
|
70
70
|
def initialize(*queues)
|
|
71
|
-
@queues = queues
|
|
71
|
+
@queues = queues.map { |queue| queue.to_s.strip }
|
|
72
72
|
validate_queues
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -152,7 +152,11 @@ module Resque
|
|
|
152
152
|
job.perform
|
|
153
153
|
rescue Object => e
|
|
154
154
|
log "#{job.inspect} failed: #{e.inspect}"
|
|
155
|
-
|
|
155
|
+
begin
|
|
156
|
+
job.fail(e)
|
|
157
|
+
rescue Object => e
|
|
158
|
+
log "Received exception when reporting failure: #{e.inspect}"
|
|
159
|
+
end
|
|
156
160
|
failed!
|
|
157
161
|
else
|
|
158
162
|
log "done: #{job.inspect}"
|
|
@@ -173,6 +177,10 @@ module Resque
|
|
|
173
177
|
end
|
|
174
178
|
|
|
175
179
|
nil
|
|
180
|
+
rescue Exception => e
|
|
181
|
+
log "Error reserving job: #{e.inspect}"
|
|
182
|
+
log e.backtrace.join("\n")
|
|
183
|
+
raise e
|
|
176
184
|
end
|
|
177
185
|
|
|
178
186
|
# Returns a list of queues to use when searching for a job.
|
|
@@ -435,7 +443,7 @@ module Resque
|
|
|
435
443
|
# The string representation is the same as the id for this worker
|
|
436
444
|
# instance. Can be used with `Worker.find`.
|
|
437
445
|
def to_s
|
|
438
|
-
@to_s ||= "#{hostname}:#{
|
|
446
|
+
@to_s ||= "#{hostname}:#{pid}:#{@queues.join(',')}"
|
|
439
447
|
end
|
|
440
448
|
alias_method :id, :to_s
|
|
441
449
|
|
|
@@ -444,10 +452,15 @@ module Resque
|
|
|
444
452
|
@hostname ||= `hostname`.chomp
|
|
445
453
|
end
|
|
446
454
|
|
|
455
|
+
# Returns PID of running worker
|
|
456
|
+
def pid
|
|
457
|
+
@pid ||= Process.pid
|
|
458
|
+
end
|
|
459
|
+
|
|
447
460
|
# Returns an array of string pids of all the other workers on this
|
|
448
461
|
# machine. Useful when pruning dead workers on startup.
|
|
449
462
|
def worker_pids
|
|
450
|
-
`ps -A -o pid,command | grep [r]esque`.split("\n").map do |line|
|
|
463
|
+
`ps -A -o pid,command | grep [r]esque | grep -i "resque-web"`.split("\n").map do |line|
|
|
451
464
|
line.split(' ')[0]
|
|
452
465
|
end
|
|
453
466
|
end
|
data/test/job_hooks_test.rb
CHANGED
data/test/job_plugins_test.rb
CHANGED
data/test/plugin_test.rb
CHANGED
data/test/resque-web_test.rb
CHANGED
data/test/resque_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
|
@@ -94,7 +94,6 @@ class NonUnique
|
|
|
94
94
|
def self.perform(data)
|
|
95
95
|
"I has a #{data}"
|
|
96
96
|
end
|
|
97
|
-
|
|
98
97
|
end
|
|
99
98
|
|
|
100
99
|
class OtherUnique
|
|
@@ -134,6 +133,20 @@ class UniqueHydraJob
|
|
|
134
133
|
@hydra = 100
|
|
135
134
|
end
|
|
136
135
|
|
|
136
|
+
class BadFailureBackend < Resque::Failure::Base
|
|
137
|
+
def save
|
|
138
|
+
raise Exception.new("Failure backend error")
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def with_failure_backend(failure_backend, &block)
|
|
143
|
+
previous_backend = Resque::Failure.backend
|
|
144
|
+
Resque::Failure.backend = failure_backend
|
|
145
|
+
yield block
|
|
146
|
+
ensure
|
|
147
|
+
Resque::Failure.backend = previous_backend
|
|
148
|
+
end
|
|
149
|
+
|
|
137
150
|
#some redgreen fun
|
|
138
151
|
# -*- coding: utf-8 -*-
|
|
139
152
|
begin
|
|
@@ -179,6 +192,4 @@ begin
|
|
|
179
192
|
end
|
|
180
193
|
rescue LoadError
|
|
181
194
|
puts "consider gem install redgreen"
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
|
|
195
|
+
end
|
data/test/worker_test.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require File.
|
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
|
2
2
|
|
|
3
3
|
context "Resque::Worker" do
|
|
4
4
|
setup do
|
|
@@ -24,6 +24,13 @@ context "Resque::Worker" do
|
|
|
24
24
|
assert_equal('Extra Bad job!', failure['error'])
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
test "does not allow exceptions from failure backend to escape" do
|
|
28
|
+
job = Resque::Job.new(:jobs, {})
|
|
29
|
+
with_failure_backend BadFailureBackend do
|
|
30
|
+
@worker.perform job
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
27
34
|
test "fails uncompleted jobs on exit" do
|
|
28
35
|
job = Resque::Job.new(:jobs, ['GoodJob', "blah"])
|
|
29
36
|
@worker.working_on(job)
|
|
@@ -56,6 +63,12 @@ context "Resque::Worker" do
|
|
|
56
63
|
assert_equal 2, Resque::Failure.count
|
|
57
64
|
end
|
|
58
65
|
|
|
66
|
+
test "strips whitespace from queue names" do
|
|
67
|
+
queues = "critical, high, low".split(',')
|
|
68
|
+
worker = Resque::Worker.new(*queues)
|
|
69
|
+
assert_equal %w( critical high low ), worker.queues
|
|
70
|
+
end
|
|
71
|
+
|
|
59
72
|
test "can work on multiple queues" do
|
|
60
73
|
Resque::Job.create(:high, GoodJob)
|
|
61
74
|
Resque::Job.create(:critical, GoodJob)
|
|
@@ -301,4 +314,8 @@ context "Resque::Worker" do
|
|
|
301
314
|
workerA.work(0)
|
|
302
315
|
assert $AFTER_FORK_CALLED
|
|
303
316
|
end
|
|
317
|
+
|
|
318
|
+
test "returns PID of running process" do
|
|
319
|
+
assert_equal Process.pid, @worker.pid
|
|
320
|
+
end
|
|
304
321
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resque-igo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 55
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 12
|
|
9
|
-
-
|
|
10
|
-
version: 1.12.
|
|
9
|
+
- 8
|
|
10
|
+
version: 1.12.8
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Nathan D Acuff
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-
|
|
18
|
+
date: 2011-02-04 00:00:00 -05:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|