Задержка запускается как демон? - PullRequest
3 голосов
/ 05 апреля 2011

Кажется, что delayed_job - это структура для планирования задач, которые должны быть выполнены (через mysql db).

Фактическая обработка выполняется через ruby, и этот процесс не выполняется как правильный?

т.е. это зависит от нас, чтобы каким-то образом запустить рубиновый огонь с помощью задания cron или?

1 Ответ

4 голосов
/ 05 апреля 2011

Задержанное задание работает как процесс и даже может запускать несколько рабочих.

Каждый из этих процессов полностью загружает ваше приложение рельсов - это может быть далеко не идеальным во многих обстоятельствах.

Вы можете начать отложенную работу с:

RAILS_ENV=production ruby script/delayed_job start -n 3

В своих собственных проектах я использую bluepill , чтобы гарантировать, что все рабочие, которые потерпели крах, будут перезапущены:

workers = 5
app_name = "my_app"
Bluepill.application("#{app_name}_delayed_job", :log_file => "#{app_home}/shared/log/bluepill.log") do |app|
  (0...workers).each do |i|
    app.process("delayed_job.#{i}") do |process|
      process.working_dir = "#{app_home}/current"

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

      process.start_command = "cd #{app_home}/current && RAILS_ENV=production ruby script/delayed_job start -i #{i}"
      process.stop_command  = "cd #{app_home}/current && RAILS_ENV=production ruby script/delayed_job stop -i #{i}"

      process.pid_file = "#{app_home}/shared/pids/delayed_job.#{i}.pid"
      process.uid = app_name # I install my applications under a user of the same name
      process.gid = app_name
    end
  end
...