2011-09-12 8 views
5

La settimana scorsa ho installato RabbitMQ e Celery sul mio sistema di produzione dopo averlo testato sul mio dev locale e tutto ha funzionato correttamente.Rabbitmq celeryd celerydeat non esegue attività in produzione come Daemon

Ho la sensazione che i miei compiti non vengano eseguiti in produzione poiché ho circa 1200 attività che sono ancora in coda.

Eseguo un setup CentOS 5.4, con i domini celeryd e celerybeat e WSGI Ho effettuato l'importazione sul modulo wsgi.

Quando eseguo, /etc/init.d/celeryd start ottengo la seguente risposta

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

Quando eseguo /etc/init.d/celerybeat start ottengo la seguente risposta

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

Così, l'uscita sembra che gli elementi vengono eseguiti successully - anche se guardando le file sembrano solo ottenere di più che essere giustiziati.

Ora se eseguo la stessa esecuzione, ma uso django's manage.py invece ./manage.py celeryd e ./manage.py celerybeat le attività iniziano immediatamente a essere elaborate.

miei /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" 

miei /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" 

miei file /etc/init.d per/celeryd e/celerybeat si basano sulla generic scripts

mi manca un parte della configurazione ???

+1

Forse può essere utile leggere i log che il tuo script di init dovrebbe creare su/var/log /, se nessun log viene creato qualche volta è perché il software ha problemi a creare il file di log. Quali sono le differenze tra il tuo sistema di produzione e il tuo locale? Sei sicuro che abbiano la stessa versione Python? –

risposta

1

Mi sono imbattuto in una situazione in cui dovevo aggiungere "python" come prefisso alla variabile CELERYD_MULTI.

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

Per una qualche ragione, il mio script manage.py non eseguirebbe normalmente (anche se avevo chmod + x e configurato di mia baracca in modo corretto.) Si potrebbe provare questo per vedere se funziona.

0

Provare a eseguire quanto segue e vedere ciò che l'output ti dice:

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

Nel mio caso ci sono stati alcuni problemi di permesso sul /var/log per l'utente che esegue sedano come