Estoy acostumbrado a usar el método delayed_jobs para ingresar a la consola para ver qué hay en la cola y la facilidad de borrar la cola cuando sea necesario. ¿Hay comandos similares en Sidekiq para esto? ¡Gracias!
ruby-on-rails
sidekiq
perseverancia
fuente
fuente
Respuestas:
Nunca he usado Sidekiq, por lo que es posible que haya métodos solo para ver los trabajos en cola, pero en realidad serían simplemente envoltorios de los comandos de Redis, ya que eso es básicamente todo lo que Sidekiq (y Resque) es:
Desafortunadamente, eliminar un trabajo específico es un poco más difícil ya que tendría que copiar su valor exacto:
Puede hacer todo esto aún más fácilmente a través de
redis-cli
:fuente
Sidekiq::Client.registered_queues
ha sido reemplazado conSidekiq::Queue.all
ySidekiq::Client.registered_workers
conSidekiq::Workers.new
, ver: github.com/mperham/sidekiq/blob/…Hay una API ergonómica para ver y administrar colas. .
No es necesario por defecto.
Aquí está el extracto:
También puede obtener algunas estadísticas resumidas.
fuente
si hay algún trabajo programado. Puede eliminar todos los trabajos usando el siguiente comando:
Si hay colas, desea eliminar todos los trabajos, puede usar el siguiente comando:
Reintentos Los trabajos también se pueden eliminar con el siguiente comando:
Hay más información aquí en el siguiente enlace, puede pagar: https://github.com/mperham/sidekiq/wiki/API
fuente
Hay una API para acceder a información en tiempo real sobre trabajadores, colas y trabajos.
Visite aquí https://github.com/mperham/sidekiq/wiki/API
fuente
Una solución alternativa es usar el módulo de prueba (requiere 'sidekiq / testing') y drenar al trabajador (MyWorker.drain).
fuente
Había 'trabajadores' colgados en la cola predeterminada y pude verlos a través de la interfaz web. Pero no estaban disponibles desde la consola si usaba Sidekiq :: Queue.new.size
Usando redis-cli pude encontrarlos
La solucion fue:
También en Sidekiq v3 hay un comando
Pero por alguna razón no funcionó para mí ese día
fuente
Y si desea borrar la cola de reintentos de sidekiq, es esto:
Sidekiq::RetrySet.new.clear
fuente
fuente
keys *
ejecutes en producción a menos que uses ese redis solo para sidekiq. Especialmente, no lo ejecute si tiene un gran conjunto de datos (caché, etc.). Redis es de un solo subproceso y sekeys *
bloquea; esto puede resultar en varios minutos de tiempo de inactividad en grandes conjuntos de datos (varios Gbs).Tarea de rastrillo para borrar todas las colas de sidekiq:
Uso:
fuente