Я пытаюсь использовать планировщик resque, но я не мог найти хороший способ контролировать процесс. Я хочу, чтобы убить задание планировщика после любого развертывания и позволить upstart
перезапустить его. Я написал сценарий Capistrano, чтобы убить Resque-планировщикresque scheduler upstart
task :stop_scheduler => :environment do
pidfile = Rails.root + "tmp/pids/resque_scheduler.pid"
if File.exists?(pidfile)
pid = File.read(pidfile).to_i
syscmd = "kill -s QUIT #{pid}"
puts "Running syscmd: #{syscmd}"
system(syscmd)
FileUtils.rm_f(pidfile)
else
puts "****WARNING**** Scheduler pid file has not been found. Was scheduler running??"
end
end
На данный момент выскочка будет перезапустить его. Моя проблема, вероятно, с upstart conf. Мне нужно, чтобы Шдулер писал PID в tmp/pids/resque_scheduler.pid, чтобы убить его при следующем перезапуске.
Вот моя выскочка конф важные части:
respawn
respawn limit 99 5
console none
script
su -c "source 'cd /myapp/; RAILS_ENV={env} bundle exec rake resque:scheduler BACKGROUND=yes PIDFILE=./tmp/pids/resque_scheduler.pid >> ~/resque_workers.log 2>&1" my_user
end script
Использования такого рода конф у меня есть эффект, что планировщик вилы другое время и ИДП я написал на моей PidFile не является правильными. Я заканчиваю процесс, который постоянно возрождается и что я больше не могу убивать.
Любое предложение?