resque-pool 0.4.0.rc1 → 0.4.0.rc2
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/resque/pool/cli.rb +2 -0
- data/lib/resque/pool/version.rb +1 -1
- data/lib/resque/pool.rb +31 -10
- data/spec/resque_pool_spec.rb +36 -0
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0c09d6a6f29e55d9b78db9d4ab9b20fc7c4d6ff8
|
|
4
|
+
data.tar.gz: a1bad283f4cd04efa34d8a3d3651e27dca80af88
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4b0c682b1dfeed43223a616adae8ed7ec6847dc7099f515ea16d0e39f2c295879c652ef36a08e24f6704ca20559614bfb02ab4b04150af296ecd55990cc309b3
|
|
7
|
+
data.tar.gz: fb9a994b4f8454279e9a3e21a3d0f3faac7cb6b74ffe0a6711b8ba063d5e0208ec2a24960240b33b17291ccc1ffbaadab2f05f71f6a2bff1c075129e9aba2a9c
|
data/lib/resque/pool/cli.rb
CHANGED
|
@@ -41,6 +41,7 @@ where [options] are:
|
|
|
41
41
|
opt :term_graceful_wait, "On TERM signal, wait for workers to shut down gracefully"
|
|
42
42
|
opt :term_graceful, "On TERM signal, shut down workers gracefully"
|
|
43
43
|
opt :term_immediate, "On TERM signal, shut down workers immediately (default)"
|
|
44
|
+
opt :single_process_group, "Workers remain in the same process group as the master", :default => false
|
|
44
45
|
end
|
|
45
46
|
if opts[:daemon]
|
|
46
47
|
opts[:stdout] ||= "log/resque-pool.stdout.log"
|
|
@@ -120,6 +121,7 @@ where [options] are:
|
|
|
120
121
|
ENV["RACK_ENV"] = ENV["RAILS_ENV"] = ENV["RESQUE_ENV"] = opts[:environment] if opts[:environment]
|
|
121
122
|
Resque::Pool.log "Resque Pool running in #{ENV["RAILS_ENV"] || "development"} environment"
|
|
122
123
|
ENV["RESQUE_POOL_CONFIG"] = opts[:config] if opts[:config]
|
|
124
|
+
Resque::Pool.single_process_group = opts[:single_process_group]
|
|
123
125
|
end
|
|
124
126
|
|
|
125
127
|
def start_pool
|
data/lib/resque/pool/version.rb
CHANGED
data/lib/resque/pool.rb
CHANGED
|
@@ -28,24 +28,31 @@ module Resque
|
|
|
28
28
|
|
|
29
29
|
# Config: after_prefork {{{
|
|
30
30
|
|
|
31
|
-
# The `after_prefork`
|
|
32
|
-
# preforking master worker to save memory. Use
|
|
31
|
+
# The `after_prefork` hooks will be run in workers if you are using the
|
|
32
|
+
# preforking master worker to save memory. Use these hooks to reload
|
|
33
33
|
# database connections and so forth to ensure that they're not shared
|
|
34
34
|
# among workers.
|
|
35
35
|
#
|
|
36
|
-
# Call with a block to set
|
|
37
|
-
# Call with no arguments to return
|
|
36
|
+
# Call with a block to set a hook.
|
|
37
|
+
# Call with no arguments to return all registered hooks.
|
|
38
|
+
#
|
|
38
39
|
def self.after_prefork(&block)
|
|
39
|
-
|
|
40
|
+
@after_prefork ||= []
|
|
41
|
+
block ? (@after_prefork << block) : @after_prefork
|
|
40
42
|
end
|
|
41
43
|
|
|
42
|
-
#
|
|
44
|
+
# Sets the after_prefork proc, clearing all pre-existing hooks.
|
|
45
|
+
# Warning: you probably don't want to clear out the other hooks.
|
|
46
|
+
# You can use `Resque::Pool.after_prefork << my_hook` instead.
|
|
47
|
+
#
|
|
43
48
|
def self.after_prefork=(after_prefork)
|
|
44
|
-
@after_prefork = after_prefork
|
|
49
|
+
@after_prefork = [after_prefork]
|
|
45
50
|
end
|
|
46
51
|
|
|
47
52
|
def call_after_prefork!
|
|
48
|
-
self.class.after_prefork
|
|
53
|
+
self.class.after_prefork.each do |hook|
|
|
54
|
+
hook.call
|
|
55
|
+
end
|
|
49
56
|
end
|
|
50
57
|
|
|
51
58
|
# }}}
|
|
@@ -65,6 +72,15 @@ module Resque
|
|
|
65
72
|
@handle_winch = bool
|
|
66
73
|
end
|
|
67
74
|
|
|
75
|
+
def self.single_process_group=(bool)
|
|
76
|
+
ENV["RESQUE_SINGLE_PGRP"] = !!bool ? "YES" : "NO"
|
|
77
|
+
end
|
|
78
|
+
def self.single_process_group
|
|
79
|
+
%w[yes y true t 1 okay sure please].include?(
|
|
80
|
+
ENV["RESQUE_SINGLE_PGRP"].to_s.downcase
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
|
|
68
84
|
def self.choose_config_file
|
|
69
85
|
if ENV["RESQUE_POOL_CONFIG"]
|
|
70
86
|
ENV["RESQUE_POOL_CONFIG"]
|
|
@@ -380,6 +396,7 @@ module Resque
|
|
|
380
396
|
def spawn_worker!(queues)
|
|
381
397
|
worker = create_worker(queues)
|
|
382
398
|
pid = fork do
|
|
399
|
+
Process.setpgrp unless Resque::Pool.single_process_group
|
|
383
400
|
log_worker "Starting worker #{worker}"
|
|
384
401
|
call_after_prefork!
|
|
385
402
|
reset_sig_handlers!
|
|
@@ -394,8 +411,12 @@ module Resque
|
|
|
394
411
|
worker = ::Resque::Worker.new(*queues)
|
|
395
412
|
worker.term_timeout = ENV['RESQUE_TERM_TIMEOUT'] || 4.0
|
|
396
413
|
worker.term_child = ENV['TERM_CHILD']
|
|
397
|
-
|
|
398
|
-
|
|
414
|
+
if ENV['LOGGING'] || ENV['VERBOSE']
|
|
415
|
+
worker.verbose = ENV['LOGGING'] || ENV['VERBOSE']
|
|
416
|
+
end
|
|
417
|
+
if ENV['VVERBOSE']
|
|
418
|
+
worker.very_verbose = ENV['VVERBOSE']
|
|
419
|
+
end
|
|
399
420
|
worker
|
|
400
421
|
end
|
|
401
422
|
|
data/spec/resque_pool_spec.rb
CHANGED
|
@@ -6,6 +6,7 @@ RSpec.configure do |config|
|
|
|
6
6
|
ENV.delete 'RACK_ENV'
|
|
7
7
|
ENV.delete 'RAILS_ENV'
|
|
8
8
|
ENV.delete 'RESQUE_ENV'
|
|
9
|
+
ENV.delete 'RESQUE_POOL_CONFIG'
|
|
9
10
|
}
|
|
10
11
|
end
|
|
11
12
|
|
|
@@ -164,3 +165,38 @@ describe Resque::Pool, "when loading the pool configuration from a file" do
|
|
|
164
165
|
end
|
|
165
166
|
|
|
166
167
|
end
|
|
168
|
+
|
|
169
|
+
describe Resque::Pool, "given after_prefork hook" do
|
|
170
|
+
subject { Resque::Pool.new(nil) }
|
|
171
|
+
|
|
172
|
+
context "with a single hook" do
|
|
173
|
+
before { Resque::Pool.after_prefork { @called = true } }
|
|
174
|
+
|
|
175
|
+
it "should call prefork" do
|
|
176
|
+
subject.call_after_prefork!
|
|
177
|
+
@called.should == true
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
context "with a single hook by attribute writer" do
|
|
182
|
+
before { Resque::Pool.after_prefork = Proc.new { @called = true } }
|
|
183
|
+
|
|
184
|
+
it "should call prefork" do
|
|
185
|
+
subject.call_after_prefork!
|
|
186
|
+
@called.should == true
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
context "with multiple hooks" do
|
|
191
|
+
before {
|
|
192
|
+
Resque::Pool.after_prefork { @called_first = true }
|
|
193
|
+
Resque::Pool.after_prefork { @called_second = true }
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
it "should call both" do
|
|
197
|
+
subject.call_after_prefork!
|
|
198
|
+
@called_first.should == true
|
|
199
|
+
@called_second.should == true
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resque-pool
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.0.
|
|
4
|
+
version: 0.4.0.rc2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- nicholas a. evans
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: resque
|
|
@@ -58,28 +58,28 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - ~>
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 2.10
|
|
61
|
+
version: '2.10'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - ~>
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 2.10
|
|
68
|
+
version: '2.10'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: cucumber
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ~>
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.2
|
|
75
|
+
version: '1.2'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - ~>
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 1.2
|
|
82
|
+
version: '1.2'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: aruba
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -158,7 +158,8 @@ files:
|
|
|
158
158
|
- spec/resque-pool-custom.yml.erb
|
|
159
159
|
- spec/resque_pool_spec.rb
|
|
160
160
|
homepage: http://github.com/nevans/resque-pool
|
|
161
|
-
licenses:
|
|
161
|
+
licenses:
|
|
162
|
+
- MIT
|
|
162
163
|
metadata: {}
|
|
163
164
|
post_install_message:
|
|
164
165
|
rdoc_options: []
|