芹菜没有找到/使用celeryconfg

时间:2015-03-19 10:01:35

标签: python django celery

我的google-fu今天早上一定不能使用,因为我无法找到信息为什么Celery没有找到我的celeryconfig文件。芹菜日志里什么也没有。我在celeryconfig中的设置似乎没有生效。我使用Django 1.7.6,Celery 3.1.17和我的项目&应用程序正在运行virtualenv。该应用程序由Apache和wsgi托管。

我使用芹菜文档中链接到github的celeryd脚本。这是我的/ etc / default / celery,删除了注释:

CELERYD_NODES="worker1"
CELERY_BIN="/home/celery/.virtualenvs/reporting/bin/celery"
CELERY_APP="main"

CELERYD_CHDIR="/home/celery/dev/reporting"

CELERYD_LOG_FILE="/var/log/celery/%N.log"
CELERYD_PID_FILE="/var/run/celery/%N.pid"

CELERYD_USER="celery"
CELERYD_GROUP="celery"
CELERY_CREATE_DIRS=1

CELERY_CONFIG_MODULE="celeryconfig"

如您所见,我将CELERYD_CHDIR设置为我的项目目录(其中包含manage.py的目录)。我在下面粘贴了pwd和ls的输出,显示该目录中的文件:

(reporting)celery@wb-devel:~/dev/reporting$ pwd
/home/celery/dev/reporting
(reporting)celery@wb-devel:~/dev/reporting$ ls
celeryconfig.py  csv_output  manage.py  reports.xml
celeryd          main        reporting  requirements.txt

所有人都可以阅读该文件。

这个问题here建议明确设置celeryconfig,如下所示:--settings=celeryconfig但我不知道在哪里明确设置(在/etc/init.d/celeryd?中),以及仍然,我想通过使用/ etc / default / celeryd中的设置指向celeryconfig

以正确的方式做事

最后一件事。在我的celery.py文件中,我有以下设置:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'reporting.settings')

app = Celery('main.celery',
          broker='amqp://',
          backend='amqp://',)

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

那么如何让Celery找到我的celeryconfig?可能是因为celeryconfig不在我的python路径上?我无法看到这是怎么回事,因为我设置了CELERYD_CHDIR,而且在我的apache配置中,我有python-path设置:WSGIDaemonProcess web-reports python-path=/home/celery/dev/reporting:/home/celery/.virtualenvs/reporting/lib/python2.7/site-packages

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为问题可能在于您将独立配置与基于Django的芹菜混合在一起。

通常,当您将celery用作独立的Python项目时,您将创建一个celeryconfig.py模块。这显示在First Steps with Celery中,关键行是:app.config_from_object('celeryconfig')

但是,在与Django集成时,通常会将配置值直接放在标准Django settings.py模块中。此变体显示在First steps with Django中,关键行更改为:app.config_from_object('django.conf:settings')

由于您要告诉芹菜从Django设置模块加载配置,您可能只需要将值移动到该文件。