Używam Sidekiq do zarządzania zadaniami za pomocą aplikacji Rails. Chciałbym wiedzieć, w jaki sposób można uzyskać argumenty dotyczące nieudanych zadań (identyfikatory, obiekty, komunikat o błędzie itp.)? W WebUI wszystko, co dostajesz, to liczba nieudanych prac. A jeśli dobrze rozumiem, domyślnie jest sumować wszystkie czasy, w których dana praca zawiodła. Mam wdrożoną aplikację i działa ona na kilku pracownikach. Trudno jest przejść przez każdego pracownika i spróbować dowiedzieć się, zwłaszcza gdy masz sidekiq.log, który ma wiele dni.Znajdź listę nieudanych zadań Sidekiq z ich argumentami
Szukam odpowiedzi tutaj i w Internecie. Jeden z najbliższych został opisany w poniższych linkach.
How to find failed jobs list in sidekiq?
Pozwala to, aby dowiedzieć się, jak wiele udało pracy mam na pewien okres czasu. Jednak nadal nie wiem, jak dowiedzieć się, co praca zawiodła i dlaczego.
Zasadniczo chciałbym jakoś zebrać job_ids i okresowo sprawdzać, które z nich się nie powiodło, lub jeśli jest łatwiejszy sposób, po prostu zapytaj Sidekiq/Redis i zobacz, jakie są argumenty i błędy nieudanych prac.
ja również odwiedziliśmy ten link: Get error message out of Sidekiq job
Oto przykład praca Używam
class ClassificationJob < ActiveJob::Base
queue_as :default
def perform(entity)
entity.preprocess!
entity.classify!
end
end
Próbowałem zmodyfikować do tego
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
Ale to wypluwa następujący błąd:
ArgumentError: You cannot include Sidekiq::Worker in an ActiveJob: ClassificationJob
Dzięki,
Yannick
Dziękuję za odpowiedź. Z mojego zrozumienia wynika, że istnieją zadania, które się nie powiodły i zostaną ponowione. W interfejsie webUI są one wyświetlane po kliknięciu przycisku "Retries". Inne nie powiodły się (nie ma sposobu, aby kliknąć).Wydaje mi się, że niektóre z nich nie zostały nawet powtórzone (w przeciwnym razie uzyskanie dostępu do listy nie powiodłoby się, ponieważ muszą one być wielokrotnie ponawiane). Moje szczególne zainteresowanie dotyczy tych. Czy źle interpretuję cokolwiek tutaj? – Yann
"Niepowodzenie" jest próbą wykonania zlecenia, która spowodowała błąd. Praca może się nie udać N razy, dlatego niepowodzenia są niemożliwe do skasowania: to tylko licznik. Masz rację, że jeśli zadanie wyłącza ponawianie, jest efemeryczne i nie będzie wyświetlane w interfejsie użytkownika, z wyjątkiem niepowodzeń inkrementacji. –
Dziękuję za twoje dobre i szybkie odpowiedzi Mike. – Yann