2011-08-11 16 views
13

He echado un vistazo a varias bibliotecas de programación para Rails y me gustaría obtener ayuda para elegir una, dado que ninguna parece cumplir con mis requisitos. Es un caso de uso bastante común:Programación dinámica de trabajos en Rails

Tenemos varios informes y nos gustaría que los usuarios configuren cuándo querrían programar cuándo y con qué frecuencia se les envía un informe en particular por correo. Los usuarios deben poder ver una lista de los informes que han programado y deberían poder cancelar o cambiar los informes programados existentes. Los trabajos programados deberían sobrevivir a los reinicios del servidor. Por el momento, no me preocupa solo ejecutar trabajos en un solo nodo en un grupo de servidores de rieles.

  • Rufus scheduler se ve bien, pero tendría que escribir el código para conservar los trabajos y reiniciarlos cuando se reinicie el raíl.
  • Delayed_job trata de persistencia, pero no puedo ver cómo ejecutar trabajos en un horario regular, excepto posiblemente en la reprogramación de un trabajo en una nueva época en la que se ejecuta
  • resque con resque-scheduler parece muy cerca, pero me gustaría evitar tener que agregar redis a nuestra pila y probablemente termine tratando de volver a implementar parte de la UI en rieles para que los usuarios puedan agregar/eliminar/administrar trabajos y sería genial si pudiera usar el mismo back-end de ActiveRecord que el resto de la aplicación.
+3

¿Qué le parece usar rufus para crear demoyed_jobs? – Zabba

Respuesta

7

yo recomendaría usar retardada :: empleo para los puestos de trabajo reales, ya que se encarga de automatizar la persistencia de sus usuarios, y se puede utilizar la tabla delayed_jobs para la gestión (que permite a los usuarios modificar/eliminar los trabajos que han empezado).

Cuando se trata de programar tareas automáticamente, puede usar la gema Clockwork. Fue construido por Heroku (si no me equivoco), y esencialmente te permite emular/reemplazar cron dentro de tu aplicación ruby ​​/ rails.

Con las dos bibliotecas de arriba, tiene todas sus bases cubiertas.

+0

+1, estaba usando el método demorado por mucho tiempo, la semana pasada agregó un reloj y todo salió bien sin inconvenientes. – rubish

1

Decidiría en contra de resque por exactamente las mismas razones. En su lugar, optamos por el trabajo retrasado y, de hecho, lo último que hace un trabajo es reprogramar el trabajo para que se vuelva a ejecutar la próxima vez.

-1

Mi empresa hace CloudQuartz (www.thecloudblocks.com) que le permite programar los trabajos a través de una API y obtener devoluciones de llamadas cuando se deben ejecutar.

Tiene una interfaz de usuario web para mostrarle trabajos, su tendencia y su estado, pero esta interfaz de usuario no estaría abierta a sus clientes a menos que use la API. Espero que esto te sea útil.

Cuestiones relacionadas