2015-11-06 24 views
6

我正在使用Sidekiq進行Rails應用程序的作業管理。我想知道你如何得到失敗的工作(Ids,對象,錯誤信息等)的論點?在WebUI上,你得到的只是失敗作業的數量。如果我理解正確,默認情況是將給定作業失敗的所有時間加起來。我部署了我的應用程序,它正在幾個工作人員上運行。每個單獨的工作人員都很難過,並試圖找出問題,特別是當你有一個很久以前的sidekiq.log時。使用它們的參數查找失敗的Sidekiq作業列表

我在這裏和網上搜索答案。最近的一個在以下鏈接中被描述。

How to find failed jobs list in sidekiq?

這使得找出有多少失敗的作業有一段時間。但是,我仍然不知道如何知道工作失敗的原因以及原因。

基本上,我想以某種方式收集job_ids並定期檢查哪些失敗或者是否有更簡單的方法,只需查詢Sidekiq/Redis並查看失敗作業的參數和錯誤。

我還訪問了這個鏈接:Get error message out of Sidekiq job

下面是一個例子的工作,我使用

class ClassificationJob < ActiveJob::Base 
queue_as :default 

def perform(entity) 
    entity.preprocess! 
    entity.classify! 
end 
end 

我試圖修改這一

class ClassificationJob < ActiveJob::Base 
queue_as :default 

def perform(entity) 
    entity.preprocess! 
    entity.classify! 
    store entity_id: entity.id.to_s 

    entity_id = retrieve :entity_id 
end 
end 

但它吐出以下錯誤:

ArgumentError: You cannot include Sidekiq::Worker in an ActiveJob: ClassificationJob 

謝謝,

雅尼克

回答

4

您正在尋找重試。 「重試」是Sidekiq對一項失敗的工作而言的,並且將在未來某個時候重新嘗試。

在Web UI使用記錄的API wiki頁面上Sidekiq API列出重試選項卡上的重試次數:

https://github.com/mperham/sidekiq/wiki/API#retries

retries = Sidekiq::RetrySet.new 
retries.each do |job| 
    p [job.klass, job.args, job.jid] 
end 
+0

謝謝你的答覆。根據我的理解,有些工作已經失敗並將被重新嘗試。在webUI上,只要點擊「重試」按鈕,就會列出它們。其他人失敗(沒有辦法點擊)。在我看來,其中一些甚至沒有重試(否則,由於需要重試多次,需要更多時間才能登錄失敗的列表)。我特別感興趣的是那些。我在這裏誤解了什麼? – Yann

+2

「失敗」是導致錯誤的作業執行嘗試。一項工作可能會失敗N次,這就是失敗失敗的原因:它只是一個計數器。你是對的,如果一項工作禁用重試,它是短暫的,除了增加失敗之外不會在UI中顯示。 –

+0

感謝您的友好和快速回復Mike。 – Yann

1

我剛剛一直在尋找一種方式,以縮小不同來自給定隊列的控制檯中的故障類型。

有點挖後,

爲了讓您的員工名單:

query = Sidekiq::Failures::FailureSet.new.map(&:item) 

query.map { |item| item['class'] }.uniq # Gives you a sense of what failed 
query.map { |item| item['wrapped'] }.uniq # Gives you the job's original class 
query.map { |item| item['queue'] }.uniq # Gives you a name of each of the queues 
query.map { |item| item['args'] }.uniq # This would give you all the argument hashes for all failures. 

的ARGS哈希具有以下鍵:

job_class 
job_id 
queue_name 
arguments 
locale 

我認爲你必須有這個寶石它的工作:https://github.com/mhfs/sidekiq-failures