2014-09-01 3 views
0

Je crée travailleur sidekiq comme suit et exec ilSidekiq emplois pas morts ont été trouvés

require 'sidekiq' 

class HardWorker 
    include Sidekiq::Worker 
    sidekiq_options :queue => 'crawler' 

    def perform(name, count) 
     logger.info "#{name}: #{count}" 
     puts 'Doing hard work' 
     puts 1/0 
    end 
end 

Et puis, et travail enqueue en exécutant ce code:

Sidekiq::Client.push({'class' => 'HardWorker', 'queue' => 'crawler', 'args' => ['name 1', 1], 'retry' => 1})  

Bien sûr, travailleur sidekiq va jeter exception à cause de 1/0. Mais après une nouvelle tentative, je ne vois pas ce travail dans le travail mortel de sidekiq web ui.

Donc, quelqu'un peut-il m'expliquer ou donner une idée pour cela?

Merci

+0

Sur le wiki: [meilleures pratiques] (https://github.com/mperham/sidekiq/wiki/Error-Handling#best-practices)Sidekiq déplacera le travail dans la file d'attente morte après avoir essayé de l'exécuter 25 fois. Pas avant ça. – Vinay

+0

Vinay, Sidekiq le déplacera vers le DJQ lorsque les tentatives seront épuisées. Il le configure clairement pour utiliser 1 seule tentative. –

+0

Que dit le journal sidekiq? –

Répondre

1

Dans le fichier journal, je trouve cette ligne:

uninitialized constant Sidekiq::Middleware::Server::RetryJobs::DeadSet 

Et puis, je Google et aller à un lien https://github.com/mperham/sidekiq/issues/1915

Alors, je l'ai fait comme guide mperham en ajoutant

require 'sidekiq/api' 

Il travaillé correctement, les travaux échoués sont apparus dans la file d'attente des travaux décédés

0

Juste une meilleure façon de faire des choses avec sidekiq, pas sûr que cela résoudra le problème, mais cela vaut la peine d'essayer hard_worker.rb

require 'sidekiq' 
class HardWorker 
    include Sidekiq::Worker 
    sidekiq_options queue: 'crawler', retry: 1 

    def perform(name, count) 
    logger.info "#{name}: #{count}" 
    puts 'Doing hard work' 
    puts 1/0 
    end 
end 

Pour la enqueue emploi HardWorker.peform_async ('nom 1', 1)

Pour plus d'informations s'il vous plaît se référer https://github.com/mperham/sidekiq/wiki/Error-Handling

Questions connexes