LINUX.ORG.RU

systemd capistrano

 , , ,


0

1

добавил сервис

Description=Resque
[Service]
User=deploy
WorkingDirectory=/home/deploy/current
ExecStart=/home/deploy/.rbenv/shims/cap stage resque:start
ExecStop=/home/deploy/.rbenv/shims/cap stage resque:stop
Restart=on-failure
[Install]
WantedBy=multi-user.target

запускаю systemctl start resque.service и по логам смотрю

Dec 23 14:34:28 test cap[4877]: 00:00 resque:start
Dec 23 14:34:28 test cap[4877]:       Starting 1 worker(s) with QUEUE: positions
Dec 23 14:34:28 test cap[4877]:       01 nohup env RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.6 $HOME/.rbenv/bin/rbenv exec bundle exec rake RACK_ENV=stage RAILS_ENV=stage VVERBOSE=1 QUEUE="positions" PIDFILE=/home/deploy/shared/tmp/pids/resque_work_1.pid BACKGROUND=yes INTERVAL=5 resque:work >> /dev/null 2>> /dev/null
Dec 23 14:34:37 test cap[4877]:     ✔ 01 deploy@localhost 8.847s
Dec 23 14:34:37 test cap[4877]:       Starting 1 worker(s) with QUEUE: sms
Dec 23 14:34:37 test cap[4877]:       02 nohup env RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.4.6 $HOME/.rbenv/bin/rbenv exec bundle exec rake RACK_ENV=stage RAILS_ENV=stage VVERBOSE=1 QUEUE="sms" PIDFILE=/home/deploy/shared/tmp/pids/resque_work_2.pid BACKGROUND=yes INTERVAL=5 resque:work >> /dev/null 2>> /dev/null
Dec 23 14:34:46 test cap[4877]:     ✔ 02 deploy@localhost 9.156s
Dec 23 14:34:47 test systemd[1]: Started Session 804 of user deploy.
Dec 23 14:34:47 test cap[6182]: 00:00 resque:stop
Dec 23 14:34:47 test cap[6182]:       01 kill -s QUIT 5258 && rm /home/deploy/shared/tmp/pids/resque_work_1.pid
Dec 23 14:34:47 test cap[6182]:     ✔ 01 deploy@localhost 0.186s
Dec 23 14:34:47 test cap[6182]:       02 kill -s QUIT 5412 && rm /home/deploy/shared/tmp/pids/resque_work_2.pid
Dec 23 14:34:47 test cap[6182]:     ✔ 02 deploy@localhost 0.170s
Dec 23 14:34:47 test systemd[1]: Stopping User Manager for UID 1000...

он стартует resque, но потом сразу выполняется команда stop, в чем может быть проблема?



Последнее исправление: Garcia (всего исправлений: 4)
Ответ на: комментарий от intelfx

пока не понятно, если проблема в протоколе, как исправить или как проверить что проблема в протоколе?

Garcia
() автор топика

А зачем вообще использовать Capistrano для запуска Resque внутри сервиса systemd? Если для того, чтобы запускать несколько очередей, то может лучше для этого написать template unit, в котором запускать очередь напрямую?

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

проблема в том, что resque сейчас запускается вот так

desc "Start Resque workers"
  task :start do
    for_each_workers do |role, workers|
      on roles(role) do
        create_pid_path
        worker_id = 1
        workers.each_pair do |queue, number_of_workers|
          info "Starting #{number_of_workers} worker(s) with QUEUE: #{queue}"
          number_of_workers.times do
            pid = "#{fetch(:resque_pid_path)}/resque_work_#{worker_id}.pid"
            within current_path do
              execute :nohup, %{#{SSHKit.config.command_map[:rake]} RACK_ENV=#{rails_env} RAILS_ENV=#{rails_env} #{fetch(:resque_extra_env)} QUEUE="#{queue}" PIDFILE=#{pid} BACKGROUND=yes #{"VERBOSE=1 " if fetch(:resque_verbose)}INTERVAL=#{fetch(:interval)} #{"environment " if fetch(:resque_environment_task)}resque:work #{output_redirection}}
            end
            worker_id += 1
          end
        end
      end
    end
  end

т.е. pid файлы создаются при старте/рестарте через capistrano resque_work_1.pid resque_work_2.pid resque_work_3.pid и т.д., а если я буду запускать руками команду в systemd

bundle exec rake COUNT=5 QUEUE=sms PIDFILE=tmp/pids/resque.pid BACKGROUND=yes INTERVAL=5 resque:workers

то у меня запускается 5 процессов resque c одним pid файлом в tmp/pids/resque.pid

Garcia
() автор топика
Ответ на: комментарий от garik_keghen

а в чем странность?

я хочу что бы каждый процесс resque можно было запустить/остановить отдельно, ну и что бы при рестарте сервера, они загружались автоматом

Garcia
() автор топика
Ответ на: комментарий от Garcia

Система инициализации, как никак, демоны все дела, у тебя более прикладная задача, на мой взгляд…

garik_keghen ★★★★★
()
Ответ на: комментарий от Garcia

если обернуть запуск воркеров в шаблонные юниты, то pid-файлы и BACKGROUND=yes там вообще не нужны, разве нет?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.