복붙노트

[REDIS] sidekiq가 레디 스 서버에 연결되어 있는지 확인하는 방법?

REDIS

sidekiq가 레디 스 서버에 연결되어 있는지 확인하는 방법?

sidekiq는 레디 스 서버에 연결되어있는 경우 콘솔을 사용하여, 내가 어떻게 알 수 있습니까? 나는 이런 식으로 뭔가를 할 수 있도록하려면 :

if (sidekiq is connected to redis) # psuedo code
  MrWorker.perform_async('do_work', user.id)
else
  MrWorker.new.perform('do_work', user.id)
end

해결법

  1. ==============================

    1.당신은 Sidekiq에서 제공하는 레디 스 정보를 사용할 수 있습니다 :

    당신은 Sidekiq에서 제공하는 레디 스 정보를 사용할 수 있습니다 :

    redis_info = Sidekiq.redis { |conn| conn.info }
    redis_info['connected_clients'] # => "16"
    

    Sidekiq시나 상태 응용 프로그램에서했다.

  2. ==============================

    2.당신이 Sidekiq 과정 위로 주어진 시점에서 처리 작업을 실행하고있는 경우 알고 싶은 것 같은데. Sidekiq 3.0로, 당신은이 작업을 수행 할 수 있습니다 :

    당신이 Sidekiq 과정 위로 주어진 시점에서 처리 작업을 실행하고있는 경우 알고 싶은 것 같은데. Sidekiq 3.0로, 당신은이 작업을 수행 할 수 있습니다 :

    require 'sidekiq/api'
    
    ps = Sidekiq::ProcessSet.new
    if ps.size > 0
      MyWorker.perform_async(1,2,3)
    else
      MyWorker.new.perform(1,2,3)
    end
    

    Sidekiq :: ProcessSet 당신에게 실행중인 모든 Sidekiq 프로세스에 대한 정보 (매 5 초마다 업데이트) 거의 실시간으로 제공합니다.

  3. ==============================

    3.나는 연결이 아닌 경우는 false 경우 위의 대답에 레일이 방법은 true를 반환합니다.

    나는 연결이 아닌 경우는 false 경우 위의 대답에 레일이 방법은 true를 반환합니다.

      def redis_connected?
        !!Sidekiq.redis(&:info) rescue false
      end
    
  4. ==============================

    4.@ overallduka의 대답 점프의 okcomputer 보석을 사용하는 사람들을 위해,이 내가 설정 한 사용자 정의 검사는 다음과 같습니다

    @ overallduka의 대답 점프의 okcomputer 보석을 사용하는 사람들을 위해,이 내가 설정 한 사용자 정의 검사는 다음과 같습니다

    class SidekiqCheck < OkComputer::Check
      def check
        if sidekiq_accessible?
          mark_message "ok"
        else
          mark_failure
        end
      end
    
      private
      def sidekiq_accessible?
        begin
          Sidekiq.redis { |conn| conn.info }
        rescue Redis::CannotConnectError
        end.present?
      end
    end
    
    OkComputer::Registry.register "sidekiq", SidekiqCheck.new
    
  5. ==============================

    5.

    begin
      MrWorker.perform_async('do_work', user.id)
    rescue Redis::CannotConnectError => e
      MrWorker.new.perform('do_work', user.id)
    end
    
  6. from https://stackoverflow.com/questions/15843637/how-to-tell-if-sidekiq-is-connected-to-redis-server by cc-by-sa and MIT license