Estoy usando Resque en un proyecto de rails-3 para manejar trabajos que están programados para ejecutarse cada 5 minutos. Hace poco hice algo que hizo crecer la creación de estos trabajos y la pila ha golpeado más de 1000 trabajos. Solucioné el problema que causó que muchos trabajos se pusieran en cola y ahora el problema que tengo es que los trabajos creados por el error siguen ahí y, por lo tanto, es difícil probar algo, ya que un trabajo se agrega a una cola con más de 1000 trabajos. Parece que no puedo detener estos trabajos. He intentado eliminar la cola del redis-cli usando el comando flushall pero no funcionó. ¿Me estoy perdiendo de algo? Porque parece que no puedo encontrar una manera de deshacerme de estos trabajos.¿Cómo destruir los trabajos puestos en cola por los trabajadores de resque?
Respuesta
Si usted hace estallar abrir una consola de rieles, se puede ejecutar el código para limpiar la cola (s):
queue_name = "my_queue"
Resque.redis.del "queue:#{queue_name}"
Actualizado tarea rastrillo para la limpieza (según los últimos Redis comandos de cambios): https://gist.github.com/1228863
Jugar fuera de las respuestas anteriores, si es necesario borrar todos sus colas, se puede utilizar el siguiente:
Resque.queues.each{|q| Resque.redis.del "queue:#{q}" }
¡Funciona de maravilla! Gracias – Trip
Resque ya tiene un método para hacer esto - es y Resque.remove_queue(queue_name)
(consulte la documentación here). Internamente, realiza Resque.redis.del()
, pero también realiza otras tareas de limpieza, y al usar un método api (en lugar de hacer suposiciones sobre cómo funciona resque), estará más preparado para el futuro.
El uso de la API Resque es un mejor enfoque – grant
Esto es lo que funciona ahora:
Resque.remove_queue("...")
Sí, parece ser la forma correcta de hacerlo: http://www.rubydoc.info/gems/resque/1.27.4/Resque#remove_queue-instance_method – jwadsack
Introduzca consola Redis:
redis-cli
bases de datos de lista:
127.0.0.1:6379> KEYS *
1) "resque:schedules_changed"
2) "resque:workers"
3) "resque:queue:your_overloaded_queue"
"resque:queue:your_overloaded_queue"
- dB, lo que necesita.
A continuación, ejecute:
DEL resque:queue:your_overloaded_queue
O si desea eliminar los trabajos especificados en la cola a continuación una lista de algunos valores de dB con LRANGE
comando:
127.0.0.1:6379> LRANGE resque:queue:your_overloaded_queue 0 2
1) "{\"class\":\"AppClass\",\"args\":[]}"
2) "{\"class\":\"AppClass\",\"args\":[]}"
3) "{\"class\":\"AppClass\",\"args\":[]}"
luego copiar/pegar un valor a LREM
comando :
127.0.0.1:6379> LREM resque:queue:your_overloaded_queue 5 "{\"class\":\"AppClass\",\"args\":[]}"
(integer) 5
Donde 5 - número de elementos a eliminar .
Redis recomienda que [no ejecuta 'KEYS *' en una base de datos de producción] (https://redis.io/commands/keys) mientras escanea todo el conjunto de claves y bloquea todos los registros. Esto podría afectar negativamente a sus trabajadores de segundo plano en un sistema muy ocupado. – jwadsack
- 1. ¿Cómo mezclar trabajos en una cola Resque?
- 2. Resque: un trabajador por cola
- 3. Los trabajadores de Resque no se inician correctamente
- 4. ¿Cómo puedo eliminar trabajos específicos de la cola Resque sin borrar toda la cola?
- 5. Obtenga programáticamente el número de trabajos en una cola Resque
- 6. Resque múltiples trabajadores en modo de desarrollo
- 7. ¿Cómo separé a los trabajadores en grupos de trabajos con trabajo retrasado + heroku?
- 8. ¿Cómo supervisar a los trabajadores de resque en New Relic cuando se ejecuta en Heroku?
- 9. cómo supervisar a los trabajadores de resfresco de café, con resque-web
- 10. modo Varios trabajadores resque crear procesos adicionales
- 11. Cola de trabajos en node.js
- 12. ¿cómo uso los auxiliares de rieles en trabajos de resquebramiento?
- 13. Líder/Seguidor vs cola de trabajos
- 14. Resque: trabajos críticos para el tiempo que se ejecutan secuencialmente por usuario
- 15. Cómo detener los trabajos de cron creados por "siempre" joya
- 16. Rabbitmq o Gearman: elegir una cola de trabajos
- 17. Inspeccione y vuelva a intentar trabajos de resque a través de redis-cli
- 18. implementación de cola de trabajos para python
- 19. botón rieles ajax favorito para los puestos de usuario
- 20. ¿Cómo cron planifica internamente los trabajos?
- 21. Cómo diagnosticar a los trabajadores de apio que se cuelgan
- 22. Cola de trabajos con redis usando BLPOP
- 23. dojo: destruir todos los widgets por nodo dom
- 24. ¿Por qué los trabajos de Powershell son tan lentos?
- 25. ¿Cómo identificar el entorno de los trabajadores web?
- 26. Resque, Resque Server, en RedisToGo con Heroku
- 27. Thread Safe Resque Trabajadores en JRuby cuando se despliega como WAR
- 28. ¿Alternativas a la cola de trabajos para trabajar con los rieles 3?
- 29. ¿Cómo se pueden inicializar los trabajadores con doSMP?
- 30. trabajadores rieles Resque fallan con PGError: servidor ha cerrado la conexión de forma inesperada
Como se encuentra en la respuesta de @ denmarkin a continuación, use Resque.redis.del en lugar de Resque.redis.delete –