我有一个用django,celery和rabbitmq编写的网站项目。一个' .delay'单击按钮时会调用task(任务创建一个新文件夹)。
当我使用manage.py运行芹菜时,芹菜(调用.delay任务,并创建一个新文件夹)的一切正常工作:
python manage.py celeryd
但是,当我将celery作为守护程序运行时,即使没有错误,也没有执行任务(没有创建文件夹)。
我有点关注教程:http://www.arruda.blog.br/programacao/django-celery-in-daemon/
我的设置是:
# Name of nodes to start, here we have a single node
CELERYD_NODES="w1"
# Where to chdir at start.
CELERYD_CHDIR="/var/www/myproject"
# How to call "manage.py celeryd_multi"
CELERYD_MULTI="$CELERYD_CHDIR/manage.py celeryd_multi"
# How to call "manage.py celeryctl"
CELERYCTL="$CELERYD_CHDIR/manage.py celeryctl"
# Extra arguments to celeryd
CELERYD_OPTS=""
# Name of the celery config module.
CELERY_CONFIG_MODULE="myproject.settings"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/w1.log"
CELERYD_PID_FILE="/var/run/celery/w1.pid"
# Workers should run as an unprivileged user.
#CELERYD_USER="root"
#CELERYD_GROUP="root"
# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="myproject.settings"
也会创建相关文件夹
用于' /etc/default/celeryd/init.d'文件,我用过这个版本: https://raw.github.com/ask/celery/1da3aa43d1e6de525beeda398d0acb8841d5b4d2/contrib/generic-init.d/celeryd
/var/www/myproject/myproject/settings.py,我有:
: import djcelery
djcelery.setup_loader()
BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_VHOST = "/"
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
INSTALLED_APPS = (
'djcelery',
...
)
使用以下方法开始芹菜时没有错误: /etc/init.d/celeryd start 也没有结果。有人知道如何解决问题吗?
答案 0 :(得分:0)
Celery的文档有daemon troubleshooting section可能会有所帮助。 Celery有一个标志,可以让你运行你的init脚本而不用实际的守护进程,这应该显示出现了什么:
C_FAKEFORK=1 sh -x /etc/init.d/celeryd start
该初始化脚本的较新版本具有dryrun command,这是一种更容易记住的方式,无需守护进程即可运行启动命令。