resque-pool 0.0.12.0.alpha → 0.0.12.1.alpha
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +17 -12
- data/examples/chef_cookbook/recipes/default.rb +32 -30
- data/lib/resque/pool/cli.rb +8 -6
- data/lib/resque/pool/version.rb +1 -1
- data/lib/resque/pool.rb +1 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -87,9 +87,6 @@ return something like the following:
|
|
87
87
|
rails 13876 13858 0 13:44 ? S 0:00 \_ resque-1.9.9: Forked 7485 at 1280343255
|
88
88
|
rails 7485 13876 0 14:54 ? S 0:00 \_ resque-1.9.9: Processing bar since 1280343254
|
89
89
|
|
90
|
-
An example startup script, which redirects STDOUT and STDERR and creates a pid
|
91
|
-
file, is given in the examples directory.
|
92
|
-
|
93
90
|
SIGNALS
|
94
91
|
-------
|
95
92
|
|
@@ -109,14 +106,21 @@ Other Features
|
|
109
106
|
--------------
|
110
107
|
|
111
108
|
You can run resque-pool as a daemon via `--daemon`. It will default to placing
|
112
|
-
the pidfile and logfiles in the rails default locations,
|
113
|
-
configure that. See `resque-pool --help` for more options.
|
114
|
-
|
109
|
+
the pidfile and logfiles in the rails default locations, and you may want to
|
110
|
+
configure that. See `resque-pool --help` for more options.
|
111
|
+
|
112
|
+
An example init.d script and monitrc are provided in
|
113
|
+
`examples/chef_cookbook/templates/default`, as erb templates. Just copy them
|
114
|
+
into place, filling in the erb variables as necessary. An example chef recipe
|
115
|
+
is also provided (it should work at Engine Yard as is; just provide a
|
116
|
+
`/data/#{app_name}/shared/config/resque-pool.yml` on your utility servers).
|
115
117
|
|
116
|
-
You can also run `resque-pool` via the `resque:pool` rake task
|
118
|
+
You can also run `resque-pool` via the `resque:pool` rake task or from a plain
|
119
|
+
old ruby script by calling `Resque::Pool.run`.
|
117
120
|
|
118
|
-
Workers will watch the pool master, and gracefully shutdown
|
119
|
-
process dies (for whatever reason) before
|
121
|
+
Workers will watch the pool master, and gracefully shutdown (after completing
|
122
|
+
their current job) if the master process dies (for whatever reason) before
|
123
|
+
them.
|
120
124
|
|
121
125
|
You can specify an alternate config file by setting the `RESQUE_POOL_CONFIG`
|
122
126
|
environment variable like so:
|
@@ -128,14 +132,14 @@ TODO
|
|
128
132
|
|
129
133
|
* cmd line option for non-rake loading
|
130
134
|
* cmd line option for preload ruby file
|
131
|
-
*
|
135
|
+
* provide Unix style log formatter
|
136
|
+
* web interface for adding and removing workers (etc)
|
132
137
|
* recover gracefully from a malformed config file (on startup and HUP)
|
133
138
|
* procline for malformed config file, graceful shutdown... and other states?
|
134
|
-
* web interface for adding and removing workers (etc)
|
135
139
|
* figure out a good automated way to test this (cucumber or rspec?)
|
136
|
-
* rename to `resque-squad`?
|
137
140
|
* clean up the code (I stole most of it from unicorn, and it's still a bit
|
138
141
|
bastardized); excessive use of vim foldmarkers are a code smell.
|
142
|
+
* rename to `resque-squad`?
|
139
143
|
* rdoc
|
140
144
|
* incorporate resque-batchworker features? (v2.0)
|
141
145
|
|
@@ -143,3 +147,4 @@ Contributors
|
|
143
147
|
-------------
|
144
148
|
|
145
149
|
* John Schult (config file can be split by environment)
|
150
|
+
* Stephen Celis (increased gemspec sanity)
|
@@ -1,38 +1,40 @@
|
|
1
1
|
if ['solo', 'util'].include?(node[:instance_role])
|
2
|
+
node[:applications].each do |app, data|
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
template "/etc/monit.d/#{app}_resque.monitrc" do
|
5
|
+
owner 'root'
|
6
|
+
group 'root'
|
7
|
+
mode 0644
|
8
|
+
source "monitrc.erb"
|
9
|
+
variables({
|
10
|
+
:app_name => app,
|
11
|
+
#:max_mem => "400 MB",
|
12
|
+
})
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
template "/etc/init.d/#{app}_resque" do
|
16
|
+
owner 'root'
|
17
|
+
group 'root'
|
18
|
+
mode 0744
|
19
|
+
source "initd.rb"
|
20
|
+
variables({
|
21
|
+
:app_name => app,
|
22
|
+
})
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
execute "enable-resque" do
|
26
|
+
command "rc-update add #{app}_resque default"
|
27
|
+
action :run
|
28
|
+
not_if "rc-update show | grep -q '^ *#{app}_resque |.*default"
|
29
|
+
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
execute "start-resque" do
|
32
|
+
command %Q{/etc/init.d/#{app}_resque start}
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
execute "ensure-resque-is-setup-with-monit" do
|
36
|
+
command %Q{monit reload}
|
37
|
+
end
|
37
38
|
|
39
|
+
end
|
38
40
|
end
|
data/lib/resque/pool/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'trollop'
|
2
|
+
require 'resque/pool'
|
2
3
|
|
3
4
|
module Resque
|
4
5
|
class Pool
|
@@ -16,7 +17,7 @@ module Resque
|
|
16
17
|
|
17
18
|
def parse_options
|
18
19
|
opts = Trollop::options do
|
19
|
-
version "resque-pool #{
|
20
|
+
version "resque-pool #{VERSION} (c) nicholas a. evans"
|
20
21
|
banner <<-EOS
|
21
22
|
resque-pool is the best way to manage a group (pool) of resque workers
|
22
23
|
|
@@ -33,13 +34,12 @@ where [options] are:
|
|
33
34
|
opt :stderr, "Redirect stderr to logfile", :type => String, :short => '-e'
|
34
35
|
opt :nosync, "Don't sync logfiles on every write"
|
35
36
|
opt :pidfile, "PID file location", :type => String, :short => "-p"
|
36
|
-
opt :environment, "Set RAILS_ENV/RACK_ENV/RESQUE_ENV",
|
37
|
-
:default => "development", :short => "-E"
|
37
|
+
opt :environment, "Set RAILS_ENV/RACK_ENV/RESQUE_ENV", :type => String, :short => "-E"
|
38
38
|
end
|
39
39
|
if opts[:daemon]
|
40
40
|
opts[:stdout] ||= "log/resque-pool.stdout.log"
|
41
41
|
opts[:stderr] ||= "log/resque-pool.stderr.log"
|
42
|
-
opts[:pidfile] ||= "resque-pool.pid"
|
42
|
+
opts[:pidfile] ||= "tmp/pids/resque-pool.pid"
|
43
43
|
end
|
44
44
|
opts
|
45
45
|
end
|
@@ -77,14 +77,16 @@ where [options] are:
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def setup_environment(opts)
|
80
|
-
ENV["RACK_ENV"] = ENV["RAILS_ENV"] = ENV["RESQUE_ENV"] = opts[:environment]
|
81
|
-
puts "
|
80
|
+
ENV["RACK_ENV"] = ENV["RAILS_ENV"] = ENV["RESQUE_ENV"] = opts[:environment] if opts[:environment]
|
81
|
+
puts "Resque Pool running in #{ENV["RAILS_ENV"] || "development"} environment."
|
82
82
|
ENV["RESQUE_POOL_CONFIG"] = opts[:config] if opts[:config]
|
83
83
|
end
|
84
84
|
|
85
85
|
def start_pool
|
86
86
|
require 'rake'
|
87
87
|
require 'resque/pool/tasks'
|
88
|
+
Rake.application.init
|
89
|
+
Rake.application.load_rakefile
|
88
90
|
Rake.application["resque:pool"].invoke
|
89
91
|
end
|
90
92
|
|
data/lib/resque/pool/version.rb
CHANGED
data/lib/resque/pool.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -1851332310
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- 12
|
10
|
-
-
|
10
|
+
- 1
|
11
11
|
- alpha
|
12
|
-
version: 0.0.12.
|
12
|
+
version: 0.0.12.1.alpha
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- nicholas a. evans
|