2012-03-26 14 views
13

Estoy interesado en ejecutar una tarea de rake de larga ejecución, una que llevaría horas completar y estoy interesado en conocer las mejores prácticas para hacer frente a este problema.Tratar con la tarea de rake de ejecución muy larga

soluciones

Posibles he encontrado:

  1. configurar una tarea cron
  2. delayed_job
  3. resque

cron parece una solución fácil de configurar, pero es ideal para una tarea muy larga? ¿Qué usa y cuáles son las ventajas/desventajas de su solución?

Respuesta

30

Personalmente, me encanta Resque, puede usar la gema del programador de resque para tratar tareas largas o periódicas.

Si no tiene que ejecutar su tarea muy a menudo, puede diabolizar la tarea de rake para asegurarse de que siga funcionando si su sesión SSH se muere o algo así.

Pruebe algo como esto:

nohup rake my:task & 

nohup enviará la salida a nohup.out en el directorio de ejecutar la tarea, y también le permitirá salir de la sesión de ssh sin el proceso de la muerte, en segundo lugar la & se ejecutará es como un Deamon.

+0

Parece que satisfará mis necesidades perfectamente. Voy a mantener abierta esta pregunta por un tiempo antes de aceptar escuchar a otros pov. ¡Gracias! –

+0

¡No hay problema! ¡Espero que encuentres la solución que estás buscando! ¡Publica tu solución una vez que la encuentres! –

1

En una aplicación que creé, los usuarios tenían la capacidad de cargar archivos PDF que se mostraban en miniatura al cargarlos para crear las imágenes de vista previa. Como los archivos PDF pueden ser extremadamente grandes, las miniaturas pueden tardar un tiempo y deben ejecutarse en segundo plano. Para ello, he utilizado

  • Paperclip para la carga,
  • la delayed_paperclip joya a mano fuera thumbnailing a un proceso en segundo plano,
  • Resque, respaldado por Redis, para manejar la cola de los trabajadores y
  • la gema God, para poner en marcha a los trabajadores de Redis y Resque y supervisar todo el shebang.

En el lado positivo, se obtiene el ingenioso Resque interfaz gráfica de usuario para ver sus trabajadores en la acción, y que tienes a Dios allí para ver (y matar y reiniciar) procesos descontrolados (que tienden a producirse un gran poco cuando está procesando archivos PDF en ImageMagick), haciendo que todo sea mucho más estable y confiable.

En el lado negativo, es mucho más difícil de configurar que un trabajo de cron. Pero tener a cron ejecutando un proceso largo y con gran cantidad de memoria sin supervisión parece una receta para el desastre.

Espero que ayude!

Cuestiones relacionadas