2011-09-12 17 views
5

La semana pasada configuré RabbitMQ y Apile en mi sistema de producción después de haberlo probado en mi desarrollador local y todo funcionó bien.Rabbitmq aplery aplerybeat no está ejecutando tareas en producción como Daemon

Tengo la sensación de que mis tareas no se están ejecutando en producción, ya que tengo unas 1200 tareas que todavía están en la cola.

corro un 5,4 instalación de CentOS, con celeryd y celerybeat demonios y WSGI me han hecho la importación en el módulo wsgi.

Cuando corro, /etc/init.d/celeryd start Me da la siguiente respuesta

[[email protected] myproject]# /etc/init.d/celeryd start 
celeryd-multi v2.3.1 
> Starting nodes... 
    > w1.myvm.centos01: OK 

Cuando corro /etc/init.d/celerybeat start tengo la siguiente respuesta

[[email protected] fundedmyprojectbyme]# /etc/init.d/celerybeat start 
Starting celerybeat... 

Así que por la salida parece que los elementos se ejecutan successully - aunque al mirar las colas solo parecen obtener algo más que ser ejecutados.

Ahora si realizo la misma ejecución, pero use manage.py de django en su lugar ./manage.py celeryd y ./manage.py celerybeat, las tareas comienzan a procesarse inmediatamente.

Mis /etc/default/celeryd

# Where to chdir at start. 
CELERYD_CHDIR="/www/myproject/" 

# How to call "manage.py celeryd_multi" 
CELERYD_MULTI="$CELERYD_CHDIR/manage.py celeryd_multi" 

# Extra arguments to celeryd 
CELERYD_OPTS="--time-limit=300 --concurrency=8" 

# Name of the celery config module. 
CELERY_CONFIG_MODULE="celeryconfig" 

# %n will be replaced with the nodename. 
CELERYD_LOG_FILE="/var/log/celery/%n.log" 
CELERYD_PID_FILE="/var/run/celery/%n.pid" 

# Workers should run as an unprivileged user. 
CELERYD_USER="celery" 
CELERYD_GROUP="celery" 

# Name of the projects settings module. 
export DJANGO_SETTINGS_MODULE="settings" 

mis /etc/default/celerybeat

# Where the Django project is. 
CELERYD_CHDIR="/www/myproject/" 

# Name of the projects settings module. 
export DJANGO_SETTINGS_MODULE="settings" 

# Path to celeryd 
CELERYD="/www/myproject/manage.py celeryd" 

# Path to celerybeat 
CELERYBEAT="/www/myproject/manage.py celerybeat" 

# Extra arguments to celerybeat 
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule" 

mis archivos de /etc/init.d para/celeryd y/celerybeat se basan en la generic scripts

me estoy perdiendo una parte de la configuración ???

+1

Tal vez puede ser útil leer los registros que su script de inicio debería crear en/var/log /, si no se crean registros algunas veces es porque el apio tiene problemas para crear el archivo de registro. ¿Cuál es la diferencia entre su sistema de producción y su local? ¿Estás seguro de que tienen la misma versión de python? –

Respuesta

1

Me encontré con una situación en la que tengo que agregar 'python' como un prefijo a la variable CELERYD_MULTI.

# How to call "manage.py celeryd_multi" 
CELERYD_MULTI="python $CELERYD_CHDIR/manage.py celeryd_multi" 

Por alguna razón, mi guión manage.py no ejecutaría normalmente (aunque había chmod + x y configurado de mi tinglado correctamente.) Usted puede tratar esto para ver si funciona.

0

intente ejecutar el siguiente y ver lo que la salida le indica:

sh -x /etc/init.d/celeryd start 

En mi caso hubo algunos problemas de permisos en /var/log para el usuario que ejecuta el apio como

Cuestiones relacionadas