Rabbitmq celeryd celeryd не выполняет задачи в производстве как Daemon - PullRequest
5 голосов
/ 12 сентября 2011

На прошлой неделе я настроил RabbitMQ и Celery в своей производственной системе после того, как проверил их на своем локальном устройстве разработки, и все работало нормально.

У меня такое ощущение, что мои задачи не выполняются на производстве, поскольку у меня есть около 1200 задач, которые все еще находятся в очереди.

Я запускаю установку CentOS 5.4 с демонами celeryd и celerybeat и WSGI Я сделал импорт в модуль wsgi.

Когда я бегу, /etc/init.d/celeryd start я получаю следующий ответ

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

Когда я запускаю /etc/init.d/celerybeat start, я получаю следующий ответ

[root@myvm fundedmyprojectbyme]# /etc/init.d/celerybeat start
Starting celerybeat...

Таким образом, по выводу кажется, что элементы выполняются успешно - хотя при просмотре очередей они только получают больше, чем выполняются.

Теперь, если я выполню то же самое выполнение, но вместо этого использую менеджмент django ./manage.py celeryd и ./manage.py celerybeat, задачи сразу начнут обрабатываться.

Мой /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"

мой /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"

мои файлы /etc/init.d для / celeryd и / celerybeat основаны на общих сценариях

Мне не хватает части конфигурации ???

Ответы [ 2 ]

1 голос
/ 13 июля 2012

Однажды я столкнулся с ситуацией, когда мне нужно добавить 'python' в качестве префикса к переменной CELERYD_MULTI.

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

По любой причине мой скрипт manage.py не будет работать нормально (даже еслиУ меня был chmod + x и я правильно настроил свой shebang.) Вы можете попробовать это, чтобы увидеть, работает ли он.

0 голосов
/ 08 июня 2013

Попробуйте выполнить следующее и посмотрите, что говорит вывод:

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

В моем случае были некоторые проблемы с правами доступа на /var/log для пользователя, который работает с сельдереем как

...