2010-08-21 22 views
6

Me gustaría hacer un trabajo cron cada 10 minutos, pero mi sistema solo tiene una duración de 1 hora. Entonces estoy buscando un método para hacer esto. He visto Timer y sleep, pero no estoy seguro de cómo hacer esto o, mejor aún, un recurso para lograr esto.¿Cómo hacer que Ruby ejecute alguna tarea cada 10 minutos?

+0

¿Cómo sabrás cuando terminen de bailar? (http://en.wikipedia.org/wiki/Minuet) – JasonFruit

+0

No hay un equipo de cámara, pero básicamente lo que hace es agregar canales de RSS y hay un atributo 'entries_total' que se actualiza e informa el número total de fuentes que reciben adicional. – s84

Respuesta

4

Tome un vistazo a http://rufus.rubyforge.org/rufus-scheduler/

rufus-planificador es una gema de rubíes para piezas de programación de código (puestos de trabajo). Entiende ejecutar un trabajo EN CIERTO momento, EN CIERTO TIEMPO, CADA X veces o simplemente a través de una declaración CRON. rufus-scheduler no es un reemplazo para cron/at ya que se ejecuta dentro de Ruby.

+0

parece que podría funcionar. Volveré sobre esto. – s84

+0

No lo he usado, pero tomé algunas ideas al crear un programador de tareas con node.js. El código se ve bien y creo que funcionaría para ti. También: http://adam.heroku.com/past/2010/4/13/rethinking_cron/ – grm

+0

Veo que este artículo también menciona: http://github.com/bvandenbos/resque-scheduler – grm

2

Para hacer esto de manera confiable, invierta en un VPS y cree el trabajo cron de 10 minutos como desee. Tratar de emular a cron por su cuenta es muy probable que falle de formas imprevistas.

Crear un proceso para dormir no es la forma de hacerlo; Si su servidor no le da la libertad de hacer su propio cron como lo desee, probablemente tampoco pueda crear su propio proceso de fondo para este tipo de cosas. Es posible que, en cada solicitud, eche un vistazo y vea cuántos de los trabajos se necesitan hacer (si fueron 25 minutos desde la última solicitud, es posible que tenga que hacer dos), y retroceda y hágalo retroactivamente.

Pero, en serio. Necesitas tu propio servidor para hacer esto de manera confiable.

+0

no hay razón para volver a implementar la rueda, especialmente teniendo en cuenta qué tan usado, robusto y maduro es el cron. +1 –

Cuestiones relacionadas