0

コードをサーバーにデプロイするときに 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

両方とも kill /resque_production_2.pid ...これは、デプロイ中にワーカーの 1 つが強制終了されていないことを意味します...これにより問題が発生すると思いますか...

最近、自分の resque ジョブの 1 つを production server のキューに入れることができないことがわかったからです。そして、リストに失敗を示さずに。これが原因でしょうか?.しかし、ステージングサーバーでは問題なく動作します。また、本番サーバーの他の resque ジョブも正常に機能します。これは非常に奇妙です。

4

1 に答える 1