2012-08-31 8 views

Respuesta

27

Intenté establecer la concurrencia en 1 y max_tasks_per_child en 1 en mi archivo settings.py y ejecuté 3 tareas al mismo tiempo. Simplemente genera 1 proceso como usuario y los otros 2 como apio. Debería ejecutar solo 1 proceso y luego esperar a que termine antes de ejecutar el otro.

Estoy usando django apio.

EDITAR {

que estaba asignando concurrencia escribiendo CELERYD_CONCURRENCY = 1 en el archivo settings.py. Pero cuando miré el archivo de registro de apio usando "tail -f /var/log/celery/w1.log", entonces vi un valor de 8 asignado a la concurrencia. Esto me dijo que setting.py no cambia la concurrencia. Para solucionar este problema, agregué las siguientes líneas al archivo "/ etc/default/aplery".

# Extra arguments to celeryd 
CELERYD_OPTS="--concurrency=1" 

Ahora la segunda tarea en la cola espera hasta que la primera haya finalizado.

}

+0

Estoy de acuerdo en 3 procesos, pero para mí genera 10 siempre. –

+0

Solo probé tres procesos. No obstante, no sé el límite. Lo principal es que si la concurrencia es 1, ¿por qué se ejecutan las tareas posteriores? Deberían estar en la bodega. – fatrock92

+0

¡Guau! ¡Editar '/ etc/default/aprendedor' me ayudó! ¡Muchas gracias! =) –

8

apio trabajador --concurrency opción permite especificar el número de procesos secundarios que procesan la cola.

+1

'CELERYD_CONCURENCY = 1' no funciona, todavía genera 10 procesos. Y ** - concurrencia = 1 ** tiene el mismo efecto. –

+0

¿Está usando autoscale? – mher

+0

Si se usa por defecto, sí. –

1

tengo esto en mi archivo celeryd-config

CELERYD_NODES=2 

que se traduce en

$ ps -ef | grep "celery" | grep -v "grep" 
www-data 1783  1 0 17:50 ?  00:00:46 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid 
www-data 1791 1783 0 17:50 ?  00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid 
www-data 1802  1 0 17:50 ?  00:00:52 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid 
www-data 1858 1802 0 17:50 ?  00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid 

hay cuatro procesos, no dos, pero hay dos trabajadores. Parece que cada subproceso de trabajo tiene dos procesos. Así que, presumiblemente, si configura CELERYD_NODES en 3, obtendrá 3 trabajadores pero 6 procesos.

+2

Ignora esta opción. CELERYD_NODES = 1 resultados en 10 procesos. CELERYD_NODES = 2 resultados en 10 procesos. –

Cuestiones relacionadas