Rabbitmq celeryd celerybeat没有在生产中执行作为守护进程的任务

时间:2011-09-12 08:06:55

标签: django centos daemon rabbitmq celery

上周我在我的生产系统上设置了RabbitMQ和Celery,在我的本地开发人员上进行了测试后,一切正常。

我觉得我的任务没有在生产中执行,因为我有大约1200个任务仍然在队列中。

我使用celerydcelerybeat守护进程以及WSGI运行CentOS 5.4设置 我已经导入了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而不是./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"

/ celeryd和/ celerybeat的/etc/init.d文件基于generic scripts

我错过了部分配置???

2 个答案:

答案 0 :(得分:1)

我遇到过一种情况,我必须在其中添加'python'作为CELERYD_MULTI变量的前缀。

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

无论出于何种原因,我的manage.py脚本都无法正常执行(即使我有chmod + x并且正确配置了我的shebang。)你可以试试看它是否有效。

答案 1 :(得分:0)

尝试运行以下内容并查看输出告诉您的内容:

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

在我的情况下,对于芹菜运行的用户/var/log存在一些权限问题