Tratando de comenzar a Redis y resque el planificador dentro de una tarea de rastrillo
-
24-10-2019 - |
Pregunta
Quiero comenzar a Redis y Redis-Sceduler desde una tarea de rastrillo, así que estoy haciendo lo siguiente:
namespace :raketask do
task :start do
system("QUEUE=* rake resque:work &")
system("rake redis:start")
system("rake resque:scheduler")
end
end
El problema es que el Redis comienza en primer plano y luego esto nunca inicia el planificador. Si no se inicia en segundo plano (usando &). El programador debe iniciarse después de que Redis está en funcionamiento.
Solución
Similar a Nirvdrum. Los trabajadores de Resque fallarán/dejarán de fumar si Redis aún no está ejecutando y aceptando conexiones.
Mira esta esencia para un ejemplo de cómo Empiece las cosas con el monit (Cosas de Linux).
Monit permite que un servicio dependa de otro, y se asegura de que se mantengan con vida al monitorear un archivo .pid.
Otros consejos
Eso me parece una gran idea. Debe comenzar su servidor Redis a través de un script de inicio o algo así. Pero, si realmente desea ir de esta manera, probablemente necesite modificar su Redis: Inicie la tarea para usar Nohup y en segundo plano el proceso para que pueda desconectarse del TTY y mantener el proceso en funcionamiento.