如果god用到新的gem,需要重启god
god -h
god -c config/god/resque.god
god load config/god/resque.god # if god has running, u can do this
god status
god restart resque
god stop resque
god start resque
# https://github.com/defunkt/resque/blob/master/examples/god/resque.god | |
# https://github.com/muik/resque-rails-god-example/blob/master/config/resque.god | |
rails_env = ENV['RAILS_ENV'] || "production" | |
rails_root = ENV['RAILS_ROOT'] || "/data/projects/entos/current" | |
num_workers = rails_env == 'production' ? 5 : 2 | |
num_workers.times do |num| | |
God.watch do |w| | |
w.dir = "#{rails_root}" | |
w.name = "resque-#{num}" | |
w.group = 'resque' | |
w.interval = 30.seconds | |
w.env = if rails_env == 'production' | |
{"QUEUE"=>"*", "RAILS_ENV"=>rails_env} | |
else | |
{"QUEUE"=>"*", "RAILS_ENV"=>rails_env, 'VVERBOSE'=>1} | |
end | |
w.start = "bundle exec rake -f #{rails_root}/Rakefile environment resque:work" | |
w.log = "#{rails_root}/log/resque.log" | |
w.err_log = "#{rails_root}/log/resque_error.log" | |
# w.uid = 'root' | |
# w.gid = 'root' | |
# restart if memory gets too high | |
w.transition(:up, :restart) do |on| | |
on.condition(:memory_usage) do |c| | |
c.above = 350.megabytes | |
c.times = 2 | |
end | |
end | |
# determine the state on startup | |
w.transition(:init, { true => :up, false => :start }) do |on| | |
on.condition(:process_running) do |c| | |
c.running = true | |
end | |
end | |
# determine when process has finished starting | |
w.transition([:start, :restart], :up) do |on| | |
on.condition(:process_running) do |c| | |
c.running = true | |
c.interval = 5.seconds | |
end | |
# failsafe | |
on.condition(:tries) do |c| | |
c.times = 5 | |
c.transition = :start | |
c.interval = 5.seconds | |
end | |
end | |
# start if process is not running | |
w.transition(:up, :start) do |on| | |
on.condition(:process_running) do |c| | |
c.running = false | |
end | |
end | |
end | |
end |