Jestem przyzwyczajony do korzystania z metody delayed_jobs wchodzenia do konsoli, aby zobaczyć, co jest w kolejce, i łatwości czyszczenia kolejki w razie potrzeby. Czy w Sidekiq są podobne polecenia do tego? Dzięki!
ruby-on-rails
sidekiq
wytrwałość
źródło
źródło
Odpowiedzi:
Nigdy nie korzystałem z Sidekiqa, więc możliwe, że istnieją metody tylko do przeglądania zadań w kolejce, ale tak naprawdę byłyby one tylko opakowaniami wokół poleceń Redis, ponieważ to w zasadzie wszystko Sidekiq (i Resque) to:
Niestety, usunięcie konkretnego zlecenia jest trochę trudniejsze, ponieważ musiałbyś skopiować jego dokładną wartość:
Możesz to wszystko zrobić jeszcze łatwiej poprzez
redis-cli
:źródło
Sidekiq::Client.registered_queues
został zastąpionySidekiq::Queue.all
iSidekiq::Client.registered_workers
zeSidekiq::Workers.new
patrz: github.com/mperham/sidekiq/blob/...Istnieje ergonomiczne API do przeglądania i zarządzania kolejkami .
Nie jest to wymagane domyślnie.
Oto fragment:
Możesz również uzyskać podsumowanie statystyk.
źródło
czy jest jakieś zaplanowane zadanie. Możesz usunąć wszystkie zadania za pomocą następującego polecenia:
jeśli są jakieś kolejki, które chcesz usunąć wszystkie zadania, możesz użyć następującego polecenia:
Zadania ponownych prób można również usunąć za pomocą następującego polecenia:
Więcej informacji znajduje się tutaj pod poniższym linkiem, możesz sprawdzić: https://github.com/mperham/sidekiq/wiki/API
źródło
Istnieje API do uzyskiwania dostępu do informacji w czasie rzeczywistym o pracownikach, kolejkach i zadaniach.
Odwiedź tutaj https://github.com/mperham/sidekiq/wiki/API
źródło
Obejściem problemu jest użycie modułu testującego (wymagaj 'sidekiq / testing') i opróżnienie pracownika (MyWorker.drain).
źródło
W domyślnej kolejce byli powieszeni „pracownicy” i mogłem ich zobaczyć przez interfejs WWW. Ale nie były dostępne z konsoli, gdybym używał Sidekiq :: Queue.new.size
Dzięki redis-cli udało mi się je znaleźć
Rozwiązaniem było:
Również w Sidekiq v3 jest polecenie
Ale z jakiegoś powodu tego dnia mi to nie wyszło
źródło
A jeśli chcesz wyczyścić kolejkę ponownych prób sidekiqa, to jest to:
Sidekiq::RetrySet.new.clear
źródło
źródło
keys *
na produkcji, chyba że używasz tego redis tylko do sidekiqa. Szczególnie nie uruchamiaj go, jeśli masz duży zestaw danych (pamięć podręczna itp.). Usługa Redis jest jednowątkowa ikeys *
blokuje - może to skutkować kilkuminutowym przestojem w przypadku dużych zestawów danych (kilka GB).Zadanie rake, aby usunąć wszystkie kolejki sidekiq:
Stosowanie:
źródło