如何在没有扩展名的情况下检查sidekiq状态

时间:2013-12-22 02:46:39

标签: ruby-on-rails sidekiq

在sidekiq wiki上,它说我可以通过轮询来检查sidekiq的状态。 我知道当我执行延迟方法时,sidekiq将返回进程id,但是如何检查Sidekiq以查看id是否已完成处理。

我希望有一些像这样的代码:

if Sidekiq.check_complete?(process_id)
    puts 'Process completed'
end

我想在没有任何额外宝石的情况下这样做。

1 个答案:

答案 0 :(得分:0)

从上面的评论中,如果您想检查Sidekiq是否已完成处理,最好的方法是检查您的队列大小。例如,使用如下的一些辅助函数..

 def sidekiq_stats()
   summary = Hash.new
   stats = Sidekiq::Stats.new
   summary = { processed: stats.processed,
               failed: stats.failed,
              enqueued: stats.enqueued,
              queues: stats.queues}
end


def queue_stats(queue)
  summary = Hash.new
  queue = Sidekiq::Queue.new(queue)
  summary = { size: queue.size,
              latency: queue.latency}
end

您可以调用每个队列并检查大小,如果所有队列的大小均为0,则Sidekiq工作程序处于空闲状态。