Cómo asegurarse de que sólo una tarea rake está funcionando a la vez?
-
02-10-2019 - |
Pregunta
Quiero tareas de instalación de rastrillo para funcionar a través de cron. Eso es fácil, pero lo que no es fácil es asegurar que sólo una copia de esa tarea rastrillo está funcionando a la vez. Me imagino que podría utilizar PS en el sistema para comprobar y salga de la tarea rake si ya se está ejecutando, o que podía hacer una estructura de trabajo discontinuo en el cual me serializar el nombre de la tarea y al finalizar la quito formar la base de datos, pero ¿qué es lo que todos recomiendan?
Solución
Unix resuelto este problema con los archivos pid. pid archivos se encuentran en / var / run y contienen los programas del ID del proceso. Esta es la página del manual: http://fuse4bsd.creo.hu/ localcgi / hombre-cgi.cgi? pidfile + 3
Puede que le resulte un poco pasado de moda (y estoy de acuerdo), pero es un método frecuentemente utilizado y probado.
Otros consejos
Puede utilizar https://rubygems.org/gems/only_one_rake , como Espacio de nombres: carriles hacen desc "número de usuarios en línea" only_one_task: online_user_count =>: entorno de tareas pendientes bucle {OnlineUser.count; sueño 1} final final