Utilizamos PHP gearman workers para ejecutar varias tareas en paralelo. Todo funciona muy bien, y tengo un pequeño script de shell para hacerlos girar cuando los quiero. Siendo un programador (y, por lo tanto, flojo), quería ver si podía crearlos mediante un script advenedizo.Iniciando múltiples instancias upstart automáticamente
me di cuenta de cómo utilizar la estrofa ejemplo, por lo que podría comenzar con un número de instancia:
description "Async insert workers"
author "Mike Grunder"
env SCRIPT_PATH="/path/to/my/script"
instance $N
script
php $SCRIPT_PATH/worker.php
end script
Y esto funciona muy bien, para empezar a ellas, así:
sudo start async-worker N=1
sudo start async-worker N=2
El La forma en que quiero utilizar estos trabajadores es hacer girar algunos de ellos (tal vez uno por núcleo, etc.), y me gustaría hacerlo al inicio. Para que quede claro, no necesito el script upstart para detectar la cantidad de núcleos. Me complace solo decir "hacer 8 instancias", pero es por eso que quiero ejecutar varias veces. ¿Hay alguna forma de que use la cláusula "start on" en un script upstart para hacer esto automáticamente?
Por ejemplo, inicie la instancia 1, 2, 3, 4? Entonces, ¿deben salir correctamente al apagar?
Supongo que podría enganchar esto en un script init.d, pero me preguntaba si el advenedizo puede manejar algo como esto, o si alguien ha resuelto este problema.
¡Salud, muchachos!
¡Muchas gracias! Traté de resolverlo de manera similar, pero me faltaba el bit 'tarea', por lo que la primera iteración del ciclo simplemente se bloquearía. Increíble. :) – mkgrunder
También debe verificar http://stackoverflow.com/questions/12084025/restarting-upstart-instance-prcesses que permite no solo iniciar varias instancias, sino también detenerlas. – Evgeny
He leído la documentación pero todavía no la entiendo, ¿por qué ese bloqueo de bucle en su primera iteración a menos que sea una tarea?/cc @mkgrunder – Mahn