0
爲什麼我們需要在將代碼部署到服務器時停止resque worker?ruby on rails在部署到服務器時停止resque worker
這是我的部署文件的一部分。我發現有一個可能的錯誤的代碼:
namespace :resque do
desc "Start resque workers"
task :start do
# Start two workers with separate run commands, so we can store their PIDs
# Hacky, but works
run "if [ ! -e #{deploy_to}/shared/pids/resque_production_1.pid ]; then cd #{deploy_to}/current && RAILS_ENV=production QUEUE=* PIDFILE=#{deploy_to}/shared/pids/resque_production_1.pid BACKGROUND=yes VERBOSE=1 bundle exec rake environment resque:work; fi;"
run "if [ ! -e #{deploy_to}/shared/pids/resque_production_2.pid ]; then cd #{deploy_to}/current && RAILS_ENV=production QUEUE=* PIDFILE=#{deploy_to}/shared/pids/resque_production_2.pid BACKGROUND=yes VERBOSE=1 bundle exec rake environment resque:work; fi;"
end
desc "Stop resque workers"
task :stop do
run "if [ -e #{deploy_to}/shared/pids/resque_production_2.pid ]; then echo \"Killing Worker #1\"; kill -s QUIT `cat #{deploy_to}/shared/pids/resque_production_2.pid`; rm -f #{deploy_to}/shared/pids/resque_production_2.pid; echo \"Done\"; fi;"
run "if [ -e #{deploy_to}/shared/pids/resque_production_2.pid ]; then echo \"Killing Worker #2\"; kill -s QUIT `cat #{deploy_to}/shared/pids/resque_production_2.pid`; rm -f #{deploy_to}/shared/pids/resque_production_2.pid; echo \"Done\"; fi;"
end
似乎存在一些誤區:
# stop resque worker
/resque_production_2.pid
他們都殺/resque_production_2.pid ......這意味着工人的一個是在部署過程中沒有遇害......你認爲這會造成任何問題...
因爲我最近發現我的一個resque作業無法排隊進入生產服務器的隊列。並沒有在列表中顯示失敗。它可能是由於這個原因導致的嗎?但是它在分段服務器上工作正常。生產服務器中的其他再生作業也可以正常工作。這很奇怪。