Команда Resque работает с терминала, но не через bluepill

Я пытаюсь заставить bluepill следить за моими спасателями.

Если я запускаю эту команду из своего корня rails от имени пользователя root, она запускает resque worker в порядке.

cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work

но когда я пытаюсь запустить его с помощью bluepill, он просто пытается запустить его и не дает мне ошибки.

Вот мой журнал bluepill, показывающий, как он пытался....!

W, [2011-07-12T22:58:21.640467 #19267]  WARN -- : [domain.com:resque] Executing start command: cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work
I, [2011-07-12T22:58:21.754392 #19267]  INFO -- : [domain.com:resque] Going from down => starting

I, [2011-07-12T22:59:21.334300 #19267]  INFO -- : [domain.com:resque] Going from starting => down
W, [2011-07-12T22:59:22.339873 #19267]  WARN -- : [domain.com:resque] Executing start command: cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work
I, [2011-07-12T22:59:22.479740 #19267]  INFO -- : [domain.com:resque] Going from down => starting

он продолжает делать это снова и снова.

вот мой файл .pill

app.process("resque") do |process|
  process.start_command = "cd #{RAILS_ROOT}; RAILS_ENV=#{RAILS_ENV} QUEUE=* bundle exec rake resque:work"
  process.daemonize = true

  process.start_grace_time = 10.seconds
  process.stop_grace_time = 10.seconds
  process.restart_grace_time = 10.seconds
end

Я попытался продлить время отсрочки запуска, если он не загружается в требуемое время, но не имеет значения.

Пожалуйста, может ли кто-нибудь помочь с этим?

заранее спасибо Рик


person rick    schedule 12.07.2011    source источник


Ответы (4)


Не приспособлен для использования bundle exec (немного устарел), но его можно легко редактировать.

Это моя производственная среда Bluepill AudioBox.fm config, проверенная в бою, рада поделиться.

ENVIRONMENT = 'production'
RAILS_ROOT  = ENV['RAILS_ROOT'] || "/var/www/myapp/current"

Bluepill.application("myapp", :log_file => "/var/log/bluepill.log") do |app|
  app.uid = "ubuntu"
  app.gid = "ubuntu"

  4.times do |i|
    app.process("uploaders-#{i}") do |process|
      process.working_dir = RAILS_ROOT
      process.group = "resque"
      queues = "amazon_upload"
      process.start_command = "/usr/bin/env VERBOSE=true RAILS_ENV=#{ENVIRONMENT} QUEUE=#{queues} rake resque:work --trace"
      process.stop_command = <<-EOF
      kill -QUIT {{PID}}
      sleep_count=0
      while [ -e /proc/{{PID}} ]; do
        sleep 1
        let "sleep_count+=1"
        if [ $sleep_count -eq 60 ]; then
          kill -TERM {{PID}}
        fi
        if [ $sleep_count -ge 70 ]; then
          kill -KILL {{PID}}
        fi
      done
      EOF

      process.stdout = process.stderr = "#{RAILS_ROOT}/log/resque.log"
      process.pid_file      = "#{RAILS_ROOT}/tmp/pids/resque-uploader-#{i}.pid"
      process.daemonize     = true
      process.start_grace_time = 5.seconds
      process.stop_grace_time = 75.seconds
      process.restart_grace_time = 80.seconds

      process.checks :mem_usage, :below => 350.megabytes, :every => 1.minute, :times => 3
    end
  end
end
person kain    schedule 14.07.2011
comment
Вы действительно должны изучить использование resque-pool, это значительно упрощает работу и дает вам лучший контроль над вашими очередями, если у вас много очередей, обрабатывающих разные задачи. - person d11wtq; 16.09.2011

Ответ @kain решил вашу проблему? У меня только что началось что-то очень похожее, см. ">bluepill не определяет, что процессы успешно запущены, и поэтому создает новые

person denishaskin    schedule 21.02.2012

Вы не говорите, на какой версии bluepill вы работали, но я только что исправил ошибку, которая проявлялась именно в таком поведении. Запрос на извлечение отправлен.

person denishaskin    schedule 24.02.2012

Я получаю такие вещи с capistrano + resque...

в ssh -> sudo service redis start, запускается

через capistrano -> sudo service redis start, говорит, что команда сработала, но нет процесса...

person Breno Salgado    schedule 01.05.2012