2011-09-12 32 views
5

上周我在我的生产系统上安装了RabbitMQ和Celery,并在我的本地开发中进行了测试,结果都表现良好。Rabbitmq celeryd celerybeat不能执行生产守护进程中的任务

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

我运行CentOS 5.4安装程序,使用celerydcelerybeat守护程序和WSGI 我已经导入到wsgi模块。

当我运行,/etc/init.d/celeryd start我得到如下回应

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

当我运行/etc/init.d/celerybeat start我得到如下回应

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

因此,通过输出似乎项successully执行 - 尽管在看队列时他们似乎不仅仅是被执行。

现在,如果我执行相同的执行,但是使用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" 

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

我缺少一个部分配置?

+1

也许是有用的阅读日志如果没有创建日志,你的init脚本应该在/ var/log /上创建,这是因为celery在创建日志文件时有问题。 你的生产系统和你的本地有什么不同? 你确定它们有相同的python版本吗? –

回答

1

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

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

不管出于什么原因,我的manage.py脚本将不能正常运行(尽管我已经使用chmod + x和配置我的家当的正确。)你可以试试这个,看看它是否工作。

0

尝试运行以下,看看输出会告诉你:

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

在我的情况有用户在/var/log一些权限的问题,芹菜运行作为