Как найти Sidekiq работает или нет - программирование
Подтвердить что ты не робот

Как найти Sidekiq работает или нет

В одном из моих проектов я использую 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. Я хочу поймать процесс, когда он запускает

4b9b3361

Ответ 1

Небольшой трюк:

ps aux | grep '[s]idekiq'

Надеюсь, что это работает.

Ответ 2

В идеале вы можете сделать это прямо из самого рубина. Поместите это в какую-нибудь рейк-задачу или автономно 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

От https://github.com/mperham/sidekiq/wiki/API#processes

Ответ 3

Я вижу, попробуйте это:

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

Ответ 4

См. этот вопрос о том, как фильтровать вывод ps с помощью grep, при этом исключая команду grep из вывода.

Ответ 5

Вы можете добавить следующие строки в ваш config/routes.rb

require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'

Запустите свой сервер, откройте браузер и проверьте свои процессы и работу

Вы можете найти его в Sidekiq Wiki