Использую гем
https://github.com/seuros/capistrano-sidekiq
Установил параметр:
set :sidekiq_processes, 2
Выполняю
cap production sidekiq:install
00:00 sidekiq:install
01 mkdir -p /home/app/.config/systemd/user
✔ 01 app@00.00.00.00 0.110s
Uploading /tmp/sidekiq@1.service 100.0%
02 mv /tmp/sidekiq@1.service /home/app/.config/systemd/user/sidekiq@1.service
✔ 02 app@00.00.00.00 0.109s
03 systemctl --user daemon-reload
✔ 03 app@00.00.00.00 0.152s
Uploading /tmp/sidekiq@2.service 100.0%
04 mv /tmp/sidekiq@2.service /home/app/.config/systemd/user/sidekiq@2.service
✔ 04 app@00.00.00.00 0.105s
✔ 03 app@00.00.00.00 0.150s
05 systemctl --user enable sidekiq
05 Failed to enable unit: Unit file sidekiq.service does not exist.
✘ 05 app@00.00.00.00 0.117s
06 loginctl enable-linger
✔ 06 app@00.00.00.00 0.128s
У меня создаются sidekiq@1.service и sidekiq@2.service
Потом выполняю
cap production sidekiq:start
00:00 sidekiq:start
01 systemctl --user start sidekiq
01 Failed to start sidekiq.service: Unit sidekiq.service not found.
✘ 01 app@00.00.00.00 0.104s
Происходит ошибка, потому по стандарту гем пытается запустить сервис sidekiq.service, вместо которого у нас два сервиса с другим названием.
Как при sidekiq:start, запустить несколько сервисов? Не обязательно два, у меня может быть и 5 или 10.
Если настраиваю один процесс, то все ок. Создается sidekiq.service, запускается и все работает как должно. В сервисе я так понимаю можно выполнить только одну команду при старте.
Может нужно создать сервисы под каждый процесс генератором и вручную создать sidekiq.service который запустит все остальные? Но тогда как?
UPDATE ВОПРОСА
В общем я немного покопался в исходниках гема и понял вот что:
sidekiq:start запускает только один процесс, если мы хотим провести запуск нескольких процессов, то нужно выполнить sidekiq:restart. Не знаю почему так и зачем, может тут есть смысл который я не понял, но вот так.
Поэтому что я сделал, в deploy.rb добавил:
namespace :deploy do
after :finishing, 'sidekiq:restart'
end
Единственно, в процессе деплоя все-равно sidekiq оставливет и запускает сервис sidekiq.service и выдает ошибку.
Я не знаю как переопределить дефолтный флоу гема, может кто-то подскажет, как выключить вот эту часть:
Файл в библиотеке:
/lib/capistrano/tasks/sidekiq.rake
namespace :sidekiq do
task :add_default_hooks do
after 'deploy:starting', 'sidekiq:quiet' if Rake::Task.task_defined?('sidekiq:quiet')
after 'deploy:updated', 'sidekiq:stop'
after 'deploy:published', 'sidekiq:start'
after 'deploy:failed', 'sidekiq:restart'
end
end