Hola comunidad, tal vez alguien pueda compartirme la receta de
capistrano
para iniciar y parar el ‘job runner’ de DelayedJob, estoy usando esta
pero
no me funciona:
desc “Stop the job runner”
task :stop_job_runner , :roles => :app do
run “ps ux | awk ‘/job_runner/ && !/awk/ {print $2}’ |xargs -i kill {}
2&>/dev/null”
end
desc “Start the job runner”
task :start_job_runner , :roles => :app do
run “cd #{current_path} && RAILS_ENV=production nohup
./script/job_runner
&”
end
Cada vez que deployo no llega a levantar el ‘job runner’, pero si
ejecuta el
mismo comando via ssh levanta sin ningun problema, he tratado de
manejarlo
mediante God, pero no me funciona bien, me parece que es debido a que le
he
pasado mal la ruta al PID ya que no se donde se encuentra.
Hola comunidad, tal vez alguien pueda compartirme la receta de capistrano
para iniciar y parar el ‘job runner’ de DelayedJob, estoy usando esta pero
no me funciona:
Cada vez que deployo no llega a levantar el ‘job runner’, pero si ejecuta el
mismo comando via ssh levanta sin ningun problema, he tratado de manejarlo
mediante God, pero no me funciona bien, me parece que es debido a que le he
pasado mal la ruta al PID ya que no se donde se encuentra.
Lo de God para gestionar el proceso esta muy bien, pero dependes de
God, del que he oido cosas buenas, y otras no tan buenas como por
ejemplo el consumo de memoria.
Para controlar los procesos de Ruby puedes utilizar la gema deamonize
de manera que podrias arrancar el procesado de colas con
script/runner. La gema se encarga de que puedas arrancar el proceso,
pararlo, reiniciarlo … i tambien de crear el pid file … etc.
Hola Francesc, si le indico a capistrano que reinicie el proceso:
desc “Restart the job runner”
task :restart_job:runner, :roles => :app do
stop_job_runner
start_job_runner
end
…
namespace :deploy do
…
task :restart do
restart_job_runner
…
end
…
end
Las tareas se llegan a ejecutar bien segun el log que me tira capistrano
al
deployar, lo que no entiendo es porque no lleva a iniciar el job runner
y
cuando ejecuto el comando por ssh.
He investigado varias maneras para manejar las tareas en background,
empeze
usando backgroundrb, hasta ayer todo funcionaba bien, pero despues de
una
actualizacion me producia un bloqueo inexplicable en el Mysql aparte de
que
me tiraba muchos recursos, he probado Workling tambien, pero por
extrañas
razones Starling siempre me cogia el puerto de desarrollo a pesar de que
le
pasaba RAILS_ENV=production, en fin, ayer opte por usar DelayedJob, me
gusto
la forma como esta hecho, es bien sencillo y lo mejor es que tengo el
respaldo de que es estable ya que lo usan en la coctelera y unvlog, por
ahora no tengo planeado migrar hacia otro sistema para gestionar las
colas,
solamente quisiera algo sencillo y que funcione.
Gracias.
El dÃa 23 de julio de 2008 14:52, Francesc E. < [email protected]> escribió:
A proposito, cuantos frustrados por monit habra aqui?, a mi monit me
funciona cuando quire, aveces todo bien a la primera instalacion, pero
en
este ultimo VPS que trate de configurarlo, no levanto por nada, asi que
no
me quedo otra que usar God, es cierto que se tira regular memoria pero
hace
su trabajo muy bien.
Saludos.
El dÃa 23 de julio de 2008 15:57, Ruben. D. [email protected]
escribió:
Una vez que he definido start-stop-daemon con sus parámetros, creo un
archivo de arranque en /etc/init.d que lo lance mediante
start-stop-daemon y luego dejo a monit que haga el resto (del que
respondiendo a tu pregunta, nunca he tenido ningún problema).
El script de arranque es más fácil de lo que parece, y te pego el
esquema de uno usando el start-stop-daemon de debian, que simplifica
bastante la cosa. Está recortado y resumido. Le puedes fácilmenta
añadir tareas. Por ejemplo en tu caso le puedes añadir un comando para
que te diga el número de trabajos en cola, que te puede ser útil para
pasárselo como parámetro de entrada a un cron que haga rrd y sacar
fácilmente gráficas sobre el uso.
Por ejemplo
/etc/init.d/delayed_jobs jobs_count
Espero que te le sirva a alguien.
PD: Perdón por el off-topic ya que esto es más de sistemas que de rails.
Un Saludo
begin /etc/init.d/serviceX ----
#!/bin/bash
PROGRAM=/usr/local/bin/program
PIDFILE=/var/run/program.pid
USER=guillermo