【问题标题】:How to tell if sidekiq is connected to redis server?如何判断sidekiq是否连接到redis服务器?
【发布时间】:2013-03-28 10:35:57
【问题描述】:

使用控制台,如何判断 sidekiq 是否连接到 redis 服务器?我希望能够做这样的事情:

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

【问题讨论】:

    标签: ruby-on-rails redis sidekiq


    【解决方案1】:

    您可以使用 Sidekiq 提供的 Redis 信息:

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

    Sidekiq's Sinatra status app获取。

    【讨论】:

    • 如果没有可用的 redis 连接或服务器,conn.info 将引发异常 Redis::CannotConnectError
    【解决方案2】:

    我将这个方法应用于 Rails 上面的答案,如果连接则返回 true,如果没有则返回 false

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

    【讨论】:

      【解决方案3】:

      听起来您想知道是否有一个 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 秒更新一次)信息。

      【讨论】:

        【解决方案4】:
        begin
          MrWorker.perform_async('do_work', user.id)
        rescue Redis::CannotConnectError => e
          MrWorker.new.perform('do_work', user.id)
        end
        

        【讨论】:

          【解决方案5】:

          跳出@overallduka 的答案,对于那些使用okcomputer gem 的人,这是我设置的自定义检查:

          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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-04-15
            • 2011-10-23
            • 1970-01-01
            • 1970-01-01
            • 2012-04-18
            • 1970-01-01
            • 1970-01-01
            • 2017-04-02
            相关资源
            最近更新 更多