resque-pool 0.4.0.rc2 → 0.4.0.rc3
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/README.md +11 -0
- data/lib/resque/pool.rb +12 -10
- data/lib/resque/pool/cli.rb +13 -0
- data/lib/resque/pool/pooled_worker.rb +16 -4
- data/lib/resque/pool/version.rb +1 -1
- metadata +17 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: faf10d33dce6efc9e10e62c0fcb8e8ab0e68f7be
|
|
4
|
+
data.tar.gz: 00b0e5a60ca0bc806e65d86bc3ede09dc8988c0d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 600b56e3f0f6dcd2b9114b0f8a0e4ea66672415c5814b6d957beee91f3d642937529ab0d0bd3847ded91d646069cdd6995a9e1f6384a850f9cc35d84b0c889e1
|
|
7
|
+
data.tar.gz: efa23c535e3dc82e22c2e8249da2c6c848e0a8c006dc4126d92c76f92ce3d510ef567ed69198b2514caf2d2c87aef2345fe7877841370fa03d2119d664035d49
|
data/README.md
CHANGED
|
@@ -70,6 +70,17 @@ the following into `lib/tasks/resque.rake`:
|
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
+
|
|
74
|
+
For normal work with fresh resque and resque-scheduler gems add next lines in lib/rake/resque.rake
|
|
75
|
+
|
|
76
|
+
```ruby
|
|
77
|
+
task 'resque:pool:setup' do
|
|
78
|
+
Resque::Pool.after_prefork do |job|
|
|
79
|
+
Resque.redis.client.reconnect
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
```
|
|
83
|
+
|
|
73
84
|
### Start the pool manager
|
|
74
85
|
|
|
75
86
|
Then you can start the queues via:
|
data/lib/resque/pool.rb
CHANGED
|
@@ -59,7 +59,7 @@ module Resque
|
|
|
59
59
|
# Config: class methods to start up the pool using the default config {{{
|
|
60
60
|
|
|
61
61
|
@config_files = ["resque-pool.yml", "config/resque-pool.yml"]
|
|
62
|
-
class << self; attr_accessor :config_files, :app_name; end
|
|
62
|
+
class << self; attr_accessor :config_files, :app_name, :spawn_delay; end
|
|
63
63
|
|
|
64
64
|
def self.app_name
|
|
65
65
|
@app_name ||= File.basename(Dir.pwd)
|
|
@@ -215,17 +215,13 @@ module Resque
|
|
|
215
215
|
when :INT
|
|
216
216
|
graceful_worker_shutdown!(signal)
|
|
217
217
|
when :TERM
|
|
218
|
-
|
|
218
|
+
case self.class.term_behavior
|
|
219
|
+
when "graceful_worker_shutdown_and_wait"
|
|
220
|
+
graceful_worker_shutdown_and_wait!(signal)
|
|
221
|
+
when "graceful_worker_shutdown"
|
|
219
222
|
graceful_worker_shutdown!(signal)
|
|
220
223
|
else
|
|
221
|
-
|
|
222
|
-
when "graceful_worker_shutdown_and_wait"
|
|
223
|
-
graceful_worker_shutdown_and_wait!(signal)
|
|
224
|
-
when "graceful_worker_shutdown"
|
|
225
|
-
graceful_worker_shutdown!(signal)
|
|
226
|
-
else
|
|
227
|
-
shutdown_everything_now!(signal)
|
|
228
|
-
end
|
|
224
|
+
shutdown_everything_now!(signal)
|
|
229
225
|
end
|
|
230
226
|
end
|
|
231
227
|
end
|
|
@@ -348,6 +344,7 @@ module Resque
|
|
|
348
344
|
end
|
|
349
345
|
|
|
350
346
|
def signal_all_workers(signal)
|
|
347
|
+
log "Sending #{signal} to all workers"
|
|
351
348
|
all_pids.each do |pid|
|
|
352
349
|
Process.kill signal, pid
|
|
353
350
|
end
|
|
@@ -375,6 +372,7 @@ module Resque
|
|
|
375
372
|
def spawn_missing_workers_for(queues)
|
|
376
373
|
worker_delta_for(queues).times do |nr|
|
|
377
374
|
spawn_worker!(queues)
|
|
375
|
+
sleep Resque::Pool.spawn_delay if Resque::Pool.spawn_delay
|
|
378
376
|
end
|
|
379
377
|
end
|
|
380
378
|
|
|
@@ -411,6 +409,10 @@ module Resque
|
|
|
411
409
|
worker = ::Resque::Worker.new(*queues)
|
|
412
410
|
worker.term_timeout = ENV['RESQUE_TERM_TIMEOUT'] || 4.0
|
|
413
411
|
worker.term_child = ENV['TERM_CHILD']
|
|
412
|
+
if worker.respond_to?(:run_at_exit_hooks=)
|
|
413
|
+
# resque doesn't support this until 1.24, but we support 1.22
|
|
414
|
+
worker.run_at_exit_hooks = ENV['RUN_AT_EXIT_HOOKS'] || false
|
|
415
|
+
end
|
|
414
416
|
if ENV['LOGGING'] || ENV['VERBOSE']
|
|
415
417
|
worker.verbose = ENV['LOGGING'] || ENV['VERBOSE']
|
|
416
418
|
end
|
data/lib/resque/pool/cli.rb
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
require 'trollop'
|
|
2
2
|
require 'resque/pool'
|
|
3
|
+
require 'resque/pool/logging'
|
|
3
4
|
require 'fileutils'
|
|
4
5
|
|
|
5
6
|
module Resque
|
|
6
7
|
class Pool
|
|
7
8
|
module CLI
|
|
9
|
+
include Logging
|
|
10
|
+
extend Logging
|
|
8
11
|
extend self
|
|
9
12
|
|
|
10
13
|
def run
|
|
@@ -38,6 +41,7 @@ where [options] are:
|
|
|
38
41
|
opt :nosync, "Don't sync logfiles on every write"
|
|
39
42
|
opt :pidfile, "PID file location", :type => String, :short => "-p"
|
|
40
43
|
opt :environment, "Set RAILS_ENV/RACK_ENV/RESQUE_ENV", :type => String, :short => "-E"
|
|
44
|
+
opt :spawn_delay, "Delay in milliseconds between spawning missing workers", :type => Integer, :short => "-s"
|
|
41
45
|
opt :term_graceful_wait, "On TERM signal, wait for workers to shut down gracefully"
|
|
42
46
|
opt :term_graceful, "On TERM signal, shut down workers gracefully"
|
|
43
47
|
opt :term_immediate, "On TERM signal, shut down workers immediately (default)"
|
|
@@ -113,6 +117,15 @@ where [options] are:
|
|
|
113
117
|
Resque::Pool.term_behavior = "graceful_worker_shutdown_and_wait"
|
|
114
118
|
elsif opts[:term_graceful]
|
|
115
119
|
Resque::Pool.term_behavior = "graceful_worker_shutdown"
|
|
120
|
+
elsif ENV["TERM_CHILD"]
|
|
121
|
+
log "TERM_CHILD enabled, so will user 'term-graceful-and-wait' behaviour"
|
|
122
|
+
Resque::Pool.term_behavior = "graceful_worker_shutdown_and_wait"
|
|
123
|
+
end
|
|
124
|
+
if ENV.include?("DYNO") && !ENV["TERM_CHILD"]
|
|
125
|
+
log "WARNING: Are you running on Heroku? You should probably set TERM_CHILD=1"
|
|
126
|
+
end
|
|
127
|
+
if opts[:spawn_delay]
|
|
128
|
+
Resque::Pool.spawn_delay = opts[:spawn_delay] * 0.001
|
|
116
129
|
end
|
|
117
130
|
end
|
|
118
131
|
|
|
@@ -2,14 +2,26 @@ require 'resque/worker'
|
|
|
2
2
|
|
|
3
3
|
class Resque::Pool
|
|
4
4
|
module PooledWorker
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
def initialize_with_pool(*args)
|
|
7
|
+
@pool_master_pid = Process.pid
|
|
8
|
+
initialize_without_pool(*args)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def pool_master_has_gone_away?
|
|
12
|
+
@pool_master_pid && @pool_master_pid != Process.ppid
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def shutdown_with_pool?
|
|
16
|
+
shutdown_without_pool? || pool_master_has_gone_away?
|
|
7
17
|
end
|
|
8
18
|
|
|
9
19
|
def self.included(base)
|
|
10
20
|
base.instance_eval do
|
|
11
|
-
alias_method :
|
|
12
|
-
alias_method :
|
|
21
|
+
alias_method :initialize_without_pool, :initialize
|
|
22
|
+
alias_method :initialize, :initialize_with_pool
|
|
23
|
+
alias_method :shutdown_without_pool?, :shutdown?
|
|
24
|
+
alias_method :shutdown?, :shutdown_with_pool?
|
|
13
25
|
end
|
|
14
26
|
end
|
|
15
27
|
|
data/lib/resque/pool/version.rb
CHANGED
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.rc3
|
|
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:
|
|
11
|
+
date: 2015-01-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: resque
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ~>
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '2.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ~>
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '2.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -136,27 +136,27 @@ files:
|
|
|
136
136
|
- Rakefile
|
|
137
137
|
- LICENSE.txt
|
|
138
138
|
- Changelog.md
|
|
139
|
-
- lib/resque/pool.rb
|
|
140
|
-
- lib/resque/pool/tasks.rb
|
|
141
|
-
- lib/resque/pool/pooled_worker.rb
|
|
142
139
|
- lib/resque/pool/logging.rb
|
|
143
140
|
- lib/resque/pool/cli.rb
|
|
144
141
|
- lib/resque/pool/version.rb
|
|
142
|
+
- lib/resque/pool/tasks.rb
|
|
143
|
+
- lib/resque/pool/pooled_worker.rb
|
|
144
|
+
- lib/resque/pool.rb
|
|
145
145
|
- bin/resque-pool
|
|
146
|
-
- man/resque-pool.
|
|
146
|
+
- man/resque-pool.1.ronn
|
|
147
147
|
- man/resque-pool.1
|
|
148
148
|
- man/resque-pool.yml.5.ronn
|
|
149
|
-
- man/resque-pool.
|
|
149
|
+
- man/resque-pool.yml.5
|
|
150
150
|
- features/basic_daemon_config.feature
|
|
151
151
|
- features/support/aruba_daemon_support.rb
|
|
152
152
|
- features/support/env.rb
|
|
153
|
-
- features/step_definitions/resque-pool_steps.rb
|
|
154
153
|
- features/step_definitions/daemon_steps.rb
|
|
155
|
-
-
|
|
154
|
+
- features/step_definitions/resque-pool_steps.rb
|
|
156
155
|
- spec/resque-pool.yml
|
|
157
|
-
- spec/
|
|
158
|
-
- spec/resque-pool-custom.yml.erb
|
|
156
|
+
- spec/mock_config.rb
|
|
159
157
|
- spec/resque_pool_spec.rb
|
|
158
|
+
- spec/resque-pool-custom.yml.erb
|
|
159
|
+
- spec/spec_helper.rb
|
|
160
160
|
homepage: http://github.com/nevans/resque-pool
|
|
161
161
|
licenses:
|
|
162
162
|
- MIT
|
|
@@ -177,17 +177,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
177
177
|
version: 1.3.1
|
|
178
178
|
requirements: []
|
|
179
179
|
rubyforge_project:
|
|
180
|
-
rubygems_version: 2.0.
|
|
180
|
+
rubygems_version: 2.0.14
|
|
181
181
|
signing_key:
|
|
182
182
|
specification_version: 4
|
|
183
183
|
summary: quickly and easily fork a pool of resque workers
|
|
184
184
|
test_files:
|
|
185
185
|
- spec/mock_config.rb
|
|
186
|
-
- spec/spec_helper.rb
|
|
187
186
|
- spec/resque_pool_spec.rb
|
|
187
|
+
- spec/spec_helper.rb
|
|
188
188
|
- spec/resque-pool.yml
|
|
189
189
|
- features/support/aruba_daemon_support.rb
|
|
190
190
|
- features/support/env.rb
|
|
191
|
-
- features/step_definitions/resque-pool_steps.rb
|
|
192
191
|
- features/step_definitions/daemon_steps.rb
|
|
192
|
+
- features/step_definitions/resque-pool_steps.rb
|
|
193
193
|
- features/basic_daemon_config.feature
|
|
194
|
+
has_rdoc:
|