2012-10-10 27 views
9

estoy corriendo un trabajador de apio como esto:ejecutar un trabajador de apio en el fondo

celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid 

Ahora quiero correr este trabajador en el fondo. He intentado varias cosas, entre ellas:

nohup celery worker --app=portalmq --logfile=/tmp/portal_mq.log --loglevel=INFO -E --pidfile=/tmp/portal_mq.pid >> /tmp/portal_mq.log 2>&1 </dev/null & 

Pero no está funcionando. He comprobado la documentación apio, y me encontré con esto:

Especialmente este comentario es relevante:

In production you will want to run the worker in the background as a daemon. 
To do this you need to use the tools provided by your platform, or something 
like supervisord (see Running the worker as a daemon for more information). 

Esto es demasiado trabajo sólo para ejecutar un proceso en el fondo. Necesitaría instalar supervisord en mis servidores y familiarizarme con él. No vayas en este momento. ¿Hay una forma simple de ejecutar un trabajador de apio en el backrground?

+0

¿Necesita algo más que esto? trabajador de apio --app = portalmq --logfile =/tmp/portalmq.log --loglevel = INFO -E --pidfile =/tmp/portalmq.pid & –

+0

Como dije, eso no funciona. El trabajador simplemente se detiene después de la inicialización. – dangonfast

+0

y funciona para mí sin nohup. Por cierto, también puedes ejecutar al trabajador en una pantalla separada. Todavía creo que puede configurar el supervisor en menos tiempo (y obtener un buen despliegue para el apio) –

Respuesta

16

supervisor es muy simple y requiere muy poco trabajo para configurarlo, lo mismo aplica para el apio en combinación con el supervisor.

No debe tomar más de 10 minutos para la configuración arriba :)

  1. instalar supervisord con apt-get

  2. crear /etc/supervisor/conf.d/celery.conf config presentar

  3. somethis pegar en el archivo celery.conf

    [program:celery] 
    directory = /my_project/ 
    command = /usr/bin/python manage.py celery worker 
    
  4. más (si es necesario) un poco de materia opcional y útil (con valores ficticios )

    user = celery_user 
    group = celery_group 
    stdout_logfile = /var/log/celeryd.log 
    stderr_logfile = /var/log/celeryd.err 
    autostart = true 
    environment=PATH="/some/path/",FOO="bar" 
    
  5. supervisor de reinicio (o hacer supervisorctl releer; supervisorctl añadir apio)

después de que los comandos de obtención del buen CTL para administrar el proceso de apio:

supervisorctl start/restart/stop celery 

supervisorctl tail [-f] celery [stderr] 
+0

Gracias. Lo intentaré lo antes posible. – dangonfast

+0

@Tommaso ¿Qué suponemos que escriba en "directorio =/mi_proyecto /"? – Simer

+0

@simer la ruta de su proyecto Django (el comando espera tener manage.py en la ruta) –

Cuestiones relacionadas