コンソールを使用して、sidekiqがredisサーバーに接続されているかどうかを確認する方法はありますか?sidekiqがredis serverに接続されているかどうかを確認するには?
if (sidekiq is connected to redis) # psuedo code
MrWorker.perform_async('do_work', user.id)
else
MrWorker.new.perform('do_work', user.id)
end
コンソールを使用して、sidekiqがredisサーバーに接続されているかどうかを確認する方法はありますか?sidekiqがredis serverに接続されているかどうかを確認するには?
if (sidekiq is connected to redis) # psuedo code
MrWorker.perform_async('do_work', user.id)
else
MrWorker.new.perform('do_work', user.id)
end
あなたはSidekiqが提供するRedisの情報を使用することができます:
redis_info = Sidekiq.redis { |conn| conn.info }
redis_info['connected_clients'] # => "16"
はSidekiq's Sinatra status appからそれを取ったが、私はこのような何かを行うことができるようにしたいです。
私はこのメソッドをRailsにoboveの答えを返します。接続されている場合はtrue
、そうでない場合はfalse
を返します。
def redis_connected?
!!Sidekiq.redis(&:info) rescue false
end
特定の時点でジョブを処理して実行する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秒毎に更新)、ほぼリアルタイムに提供します。
okcomputer宝石を使用してそれらのために、これは私が設定したカスタムチェックで、overalldukaの答え@飛び降りbegin
MrWorker.perform_async('do_work', user.id)
rescue Redis::CannotConnectError => e
MrWorker.new.perform('do_work', user.id)
end
:
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
'conn.info'があろうと使用可能なRedisの接続やサーバーがありません場合は例外を発生させる 'Redis :: CannotConnectError' –