Ответ 1
Небольшой трюк:
ps aux | grep '[s]idekiq'
Надеюсь, что это работает.
В одном из моих проектов я использую Sidekiq
Есть ли встроенный метод/метод Sidekiq console, который помогает мне найти, работает ли sidekiq или нет.
Мое требование - это условие предварительной проверки, где, если Sidekiq не работает, я вызову ошибку.
Я попытался использовать grep как
'ps -ef | grep sidekiq'
но это не решает мою цель.
Метод, который я ищу, должен выглядеть примерно так:
Sidekiq.is_running?
Спасибо заранее.
Я также пробовал
Sidekiq не работает
1.9.3p392 :021 > system 'ps aux | grep sidekiq'
ankitgupta 6683 0.0 0.0 2432768 600 s001 R+ 11:47AM 0:00.00 grep sidekiq
ankitgupta 6681 0.0 0.0 2433432 916 s001 S+ 11:47AM 0:00.01 sh -c ps aux | grep sidekiq
=> true
Sidekiq работает
1.9.3p392 :022 > system 'ps aux | grep sidekiq'
ankitgupta 6725 0.0 0.0 2432768 600 s001 S+ 11:57AM 0:00.00 grep sidekiq
ankitgupta 6723 0.0 0.0 2433432 916 s001 S+ 11:57AM 0:00.00 sh -c ps aux | grep sidekiq
ankitgupta 6707 0.0 1.3 3207416 111608 s002 S+ 11:56AM 0:07.46 sidekiq 2.11.2 project_name [0 of 25 busy]
=> true
Он всегда возвращает true. Я хочу поймать процесс, когда он запускает
Небольшой трюк:
ps aux | grep '[s]idekiq'
Надеюсь, что это работает.
В идеале вы можете сделать это прямо из самого рубина. Поместите это в какую-нибудь рейк-задачу или автономно script (не забудьте указать подробности соединения Sidekiq)
ps = Sidekiq::ProcessSet.new
ps.size # => 2
ps.each do |process|
p process['busy'] # => 3
p process['hostname'] # => 'myhost.local'
p process['pid'] # => 16131
end
ps.each(&:quiet!) # equivalent to the USR1 signal
ps.each(&:stop!) # equivalent to the TERM signal
Я вижу, попробуйте это:
module Process
class << self
def is_running?(pid)
begin
Process.kill(0, pid)
true
rescue Errno::ESRCH
false
end
end
end
end
1.9.3p392 :001 > puts `ps aux | grep -i [s]idekiq`
Он вернет вам pid как: 12247, и вы можете проверить, работает ли он:
Process.is_running?(12247) // true | false
См. этот вопрос о том, как фильтровать вывод ps с помощью grep, при этом исключая команду grep из вывода.
Вы можете добавить следующие строки в ваш config/routes.rb
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
Запустите свой сервер, откройте браузер и проверьте свои процессы и работу
Вы можете найти его в Sidekiq Wiki