2013-12-22 64 views
1

在sidekiq wiki上它說我可以通過輪詢檢查sidekiq的狀態。 我知道當我執行延遲方法時,sidekiq將返回進程ID,但如何檢查Sidekiq以查看該ID是否已完成處理。如何檢查沒有擴展名的sidekiq狀態

我希望一些這樣的代碼:

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

我想這樣做沒有任何額外的寶石。

+0

你是否試圖檢查Sidekiq是否完成處理作業,並坐着閒置?或者說Sidekiq進程仍在運行? – blotto

+0

是的,我想看看如果一個過程是否完成處理。 – sonnyhe2002

回答

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工人處於閒置狀態。