在sidekiq wiki上,它说我可以通过轮询来检查sidekiq的状态。 我知道当我执行延迟方法时,sidekiq将返回进程id,但是如何检查Sidekiq以查看id是否已完成处理。
我希望有一些像这样的代码:
if Sidekiq.check_complete?(process_id)
puts 'Process completed'
end
我想在没有任何额外宝石的情况下这样做。
答案 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工作程序处于空闲状态。