Зачем нам нужно прекратить поиск работника при развертывании кода на сервере?рубины на рельсах останавливают работника resque при развертывании на сервер
Это часть моего файла развертывания. Я обнаружил, есть возможная ошибка в кодах:
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 не может быть поставлено в очередь в очереди на рабочем сервере. И не показывая неудачу в списке. Может ли это быть причиной этого ?. Но он отлично работает на промежуточном сервере. Кроме того, другие рабочие запросы на рабочем сервере могут работать нормально. Это очень странно.