python - 在使用 Django 1.7.1,python 3.4和 celery 3.1时,模块没有属性"celery"

  显示原文与译文双语对照的内容
0 0

我的项目使用 python 3.4,Django 1.7.1,celery 3.1. 我让RabbitMQ按预期运行。

项目结构是out-of-the-box标准:

my_project/
 my_project/
 settings.py
 celery.py
. . .

我知道有几个重复的问题,但他们并没有解决我的问题。 我的celery.py 文件如下所示:

from __future__ import absolute_import
import os
import django
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_project.settings')
django.setup()
app = Celery('my_project')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

设置:

BROKER_URL = 'amqp://guest:guest@localhost:5672//'

当我尝试运行时:

$ celery -A my_project worker -l debug

我得到 celery 属性错误。

完全回溯:

Traceback (most recent call last):
 File"/usr/local/bin/celery", line 9, in <module>
 load_entry_point('celery==3.1.17', 'console_scripts', 'celery')()
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/__main__.py", line 30, in main
 main()
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/bin/celery.py", line 81, in main
 cmd.execute_from_commandline(argv)
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/bin/celery.py", line 769, in execute_from_commandline
 super(CeleryCommand, self).execute_from_commandline(argv)))
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/bin/base.py", line 305, in execute_from_commandline
 argv = self.setup_app_from_commandline(argv)
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/bin/base.py", line 465, in setup_app_from_commandline
 self.app = self.find_app(app)
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/bin/base.py", line 485, in find_app
 return find_app(app, symbol_by_name=self.symbol_by_name)
 File"/usr/local/lib/python3.4/dist-packages/celery-3.1.17-py3.4.egg/celery/app/utils.py", line 240, in find_app
 found = sym.celery
AttributeError: 'module' object has no attribute 'celery'

我做错什么了?

时间:原作者:4个回答

0 0

你的配置很好。但是当启动工作时,需要指定应用程序名或者具有 celery 对象的文件。 但是你只是指定了 my_project,它没有 celery 对象。

celery worker -A my_project.celery -l debug 

应该解决这个问题。

也可以将 celery.py 重命名为 celery_conf.py 或者其他。

原作者:
0 0

这是个安装问题。 我刚刚重置了 virtualenv,安装了 celery 和。 抱歉,浪费了大家的时间。

原作者:
...