instance gearman worker upstart

instance - Iniciando múltiples instancias upstart automáticamente



gearman worker (1)

Lo que necesita es una tarea de arranque que se ejecuta en el inicio e itera en todos sus trabajos de trabajador, iniciando cada uno.

#/etc/init/async-workers-all.conf start on runlevel [2345] task env NUM_WORKERS=8 script for i in `seq 1 $NUM_WORKERS` do start async-worker N=$i done end script

La clave es hacer de esto una tarea , que le dice a upstart que permita que la tarea se ejecute hasta completarse antes de emitir cualquier evento para ella. Consulte http://upstart.ubuntu.com/cookbook/#task y http://upstart.ubuntu.com/cookbook/#instance

Utilizamos trabajadores de PHP gearman para ejecutar varias tareas en paralelo. Todo funciona bien, y tengo un pequeño script de shell para hacerlos girar cuando los quiero. Siendo programador (y, por lo tanto, perezoso), quería ver si podía hacerlo a través de un script de arranque.

Descubrí cómo usar la stanza de instancia, para poder 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 así:

sudo start async-worker N=1 sudo start async-worker N=2

La forma en que quiero usar a estos trabajadores es aumentar algunos de ellos (tal vez uno por núcleo, etc.), y me gustaría hacer esto en el inicio. Para ser claros, no necesito el script upstart para detectar el número de núcleos. Estoy feliz de decir "hacer 8 instancias", pero es por eso que quiero que se ejecuten varias veces. ¿Hay alguna manera de que use la cláusula de "inicio en" en un script de inicio para hacerlo automáticamente?

Por ejemplo, iniciar instancia 1, 2, 3, 4? ¿Entonces hacer que salgan de la parada correctamente?

Supongo que podría conectar esto a un script init.d, pero me preguntaba si el inicio puede manejar algo como esto, o si alguien ha descubierto este problema.

¡Animo amigos!