Не удается запустить службу delayed_job - PullRequest
1 голос
/ 22 декабря 2010

Я использую delayed_job, чтобы поработать над фоновым процессом.Я бегу с тем же проектом на локальной машине, и он работает нормально.Тем не менее, я запускаю его на сервере, вызывая проблемы.У меня есть другой проект, использующий delayed_job также, и он отлично работает на том же сервере, который вызывает проблему.

Ниже приводится исключение:

exit
["/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/daemonize.rb:167:in `exit'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/daemonize.rb:167:in `call_as_daemon'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:254:in `start_proc'",
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:294:in `start'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/controller.rb:70:in `run'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:193", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `call'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `catch_exceptions'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:192:in `run_proc'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:71:in `run_process'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:65:in `daemonize'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:63:in `times'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:63:in `daemonize'",
 "script/delayed_job:5"]
delayed_job: process with pid 16880 started.

1 Ответ

0 голосов
/ 22 декабря 2010

Как ни странно, он говорит: «процесс с pid 16880 запущен». Если вы запустите это:

ps -Alf | grep 16880

Показывает ли это, что процесс запущен? В этом случае я обращался бы к файлам журнала, которые он записывает.

Возможно, у вас нет прав для запуска процесса? Попробуйте

sudo RAILS_ENV=production script/delayed_job start

Не рекомендуется хранить такие вещи на сервере, но в нем должно быть указано, есть ли проблема с разрешениями пользователя для любого пользователя, выполняющего процесс dj.

И, кроме того, убедитесь, что вы случайно не запустили несколько экземпляров демона delayed_job. Не уверен, что процесс будет вызван, но вы можете использовать ps и grep, чтобы найти все экземпляры и затем убить их:

ps -Alf | grep delayed_job

Тогда, скажем, вы видите несколько запущенных экземпляров, а первый имеет идентификатор процесса 123456

kill -HUP 123456
...