使用控制檯,如何判斷sidekiq是否連接到redis服務器?我希望能夠做這樣的事情:如何判斷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
使用控制檯,如何判斷sidekiq是否連接到redis服務器?我希望能夠做這樣的事情:如何判斷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
您可以使用Sidekiq提供Redis的信息:
redis_info = Sidekiq.redis { |conn| conn.info }
redis_info['connected_clients'] # => "16"
我將此方法設置爲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爲您提供幾乎實時(更新每5秒)任何運行Sidekiq進程信息。
begin
MrWorker.perform_async('do_work', user.id)
rescue Redis::CannotConnectError => e
MrWorker.new.perform('do_work', user.id)
end
跳樓@ 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
如果有可用的'conn.info'就再也Redis的連接或服務器引發'Redis :: CannotConnectError'異常 – 2013-05-07 18:16:28