Skip to content

Commit

Permalink
fix(god) fast restart with nowait
Browse files Browse the repository at this point in the history
При рестарте не выключаем и включаем god, а подсовываем ему новую конфигу.
Теперь при смене конфига больше нет необходимости дожидаться,
пока длинные джобы будут завершены и только потом будут (пере)запущены очереди.
Есть небольшой минус, глобальные опции, такие как pid_file_directory не будут перечитаны.
  • Loading branch information
bibendi committed Dec 12, 2013
1 parent fb9a497 commit 22a4912
Showing 1 changed file with 1 addition and 38 deletions.
39 changes: 1 addition & 38 deletions lib/resque/integration/tasks/resque.rake
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# coding: utf-8

require 'digest/md5'

namespace :resque do
desc 'Generate God configuration file'
task :conf => :environment do
Expand All @@ -16,33 +14,15 @@ namespace :resque do
puts `#{god} start resque`
else
puts `#{god} -c #{config_file} -P #{pid_file} -l #{log_file}`
save_md5
end
end

desc 'Restart Resque workers'
task :restart => :conf do
if god_stopped?
Rake::Task['resque:start'].invoke
elsif config_changed?
puts 'Resque config changed, God should be stopped and started again.'

# it can take long, we'll run it in background
puts 'Stopping god. It can take a while...'

Process.daemon(true, false)

# Stop everything
Rake::Task['resque:terminate'].invoke

# Start again
Rake::Task['resque:start'].invoke
else
puts 'Restarting god. Executing in background. It can take a while...'

Process.daemon(true, false)

`#{god} restart resque`
puts `#{god} load #{config_file} stop && #{god} restart resque`
end
end

Expand Down Expand Up @@ -99,21 +79,4 @@ namespace :resque do
def config_file
Rails.root.join('config/resque.god').to_s
end

# Returns true if config file was changed since last deploy
def config_changed?
config_md5 != current_md5
end

def current_md5
Resque.redis.get('config:md5')
end

def save_md5
Resque.redis.set('config:md5', config_md5)
end

def config_md5
Digest::MD5.hexdigest(File.read(config_file))
end
end

0 comments on commit 22a4912

Please sign in to comment.