Estou acostumado a usar o método delayed_jobs para entrar no console para ver o que está na fila e a facilidade de limpar a fila quando necessário. Existem comandos semelhantes no Sidekiq para isso? Obrigado!
ruby-on-rails
sidekiq
perseverança
fonte
fonte
Respostas:
Eu nunca usei o Sidekiq, então é possível que existam métodos apenas para visualizar os trabalhos enfileirados, mas eles seriam apenas invólucros em torno dos comandos do Redis, já que basicamente tudo o que Sidekiq (e Resque) é:
Infelizmente, remover um trabalho específico é um pouco mais difícil, pois você teria que copiar seu valor exato:
Você pode fazer tudo isso ainda mais facilmente via
redis-cli
:fonte
Sidekiq::Client.registered_queues
foi substituído porSidekiq::Queue.all
eSidekiq::Client.registered_workers
porSidekiq::Workers.new
, consulte: github.com/mperham/sidekiq/blob/…Existe uma API ergonômica para visualização e gerenciamento de filas .
Não é obrigatório por padrão.
Aqui está o trecho:
Você também pode obter algumas estatísticas resumidas.
fonte
se houver algum trabalho agendado. Você pode excluir todos os trabalhos usando o seguinte comando:
se houver filas que você deseja excluir todos os trabalhos, você pode usar o seguinte comando:
Trabalhos de novas tentativas também podem ser removidos pelo seguinte comando:
Há mais informações aqui no link a seguir, você pode conferir: https://github.com/mperham/sidekiq/wiki/API
fonte
Existe uma API para acessar informações em tempo real sobre trabalhadores, filas e trabalhos.
Visite aqui https://github.com/mperham/sidekiq/wiki/API
fonte
Uma solução alternativa é usar o módulo de teste (requer 'sidekiq / testing') e drenar o trabalhador (MyWorker.drain).
fonte
Havia 'trabalhadores' enforcados na fila padrão e eu pude vê-los pela interface da web. Mas eles não estavam disponíveis no console se eu usasse Sidekiq :: Queue.new.size
Usando redis-cli, consegui encontrá-los
A solução foi:
Também no Sidekiq v3 existe um comando
Mas por algum motivo não funcionou para mim naquele dia
fonte
E se você quiser limpar a fila de repetição do sidekiq, é este:
Sidekiq::RetrySet.new.clear
fonte
fonte
keys *
em produção a menos que use esse redis apenas para sidekiq. Especialmente não execute se você tiver um grande conjunto de dados (cache, etc). O Redis é de thread único ekeys *
bloqueia - isso pode resultar em vários minutos de tempo de inatividade em grandes conjuntos de dados (vários Gbs).Tarefa de rake para limpar todas as filas sidekiq:
Uso:
fonte