rails job delayed_job_active_record delayed active ruby-on-rails ruby delayed-job

ruby-on-rails - rails - delayed_job_active_record



Destruyendo todo trabajo demorado en rieles. (3)

Estoy utilizando collectiveidea para rieles 2.3.8. Estoy creando una serie de trabajos retrasados ​​para realizar algunas tareas, después de un tiempo quiero destruir todos los trabajos retrasados ​​que se están ejecutando. Si alguien sabe la forma de hacerlo, por favor ayúdame.


Además de la tarea de rake, los trabajos DelayedJob son solo un modelo normal de ActiveRecord, así que si estás en el código Ruby puedes hacer lo que quieras con ellos:

Delayed::Job.destroy_all Delayed::Job.delete_all Delayed::Job.find(4).destroy # etc.


Parece que tienes un proceso padre que quiere agotarse si su conjunto de trabajos no se completa en un tiempo determinado. En lugar de aferrarse a las referencias a los trabajos en sí, establezca una marca en un modelo que indique que el proceso se ha rendido. Los trabajos pueden verificar esa bandera y cortocircuito si ya no son necesarios. (Su clase de trabajo también debería incluir el contenido de su método #perform en un tiempo de espera).

Casi siempre es una mala idea tratar de aferrarse a referencias a objetos de DJ como parece sugerir.


Solo tenía que leer el archivo README de la página de GitHub delayed_job para resolverlo:

Puede invocar trabajos de rake: desactive para eliminar todos los trabajos en la cola.