当我在终端中运行celery -A uno worker -l info
时,我得到错误
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named uno
这是我的celery.py,它在django settings.py文件所在的uno应用程序中。
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'uno.settings')
app = Celery('uno')
# This reads, e.g., CELERY_ACCEPT_CONTENT = ['json'] from settings.py:
app.config_from_object('django.conf:settings')
# For autodiscover_tasks to work, you must define your tasks in a file called 'tasks.py'.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print("Request: {0!r}".format(self.request))
我正在使用Ubuntu,但在Mac上遇到同样的错误。我通过pip在虚拟环境
中安装芹菜。我不知道什么是错的,或者我在这里错过了什么。如果我在不同的项目中使用相同的芹菜文件,命名它的工作例如app =芹菜('faketest'). 我不确定这个应用程序出了什么问题。可能是因为我后来更改了应用程序名称。我真的被难住了……
我只是想说,如果你已经正确地命名了一切,你仍然有模块没有发现错误(我花了几个小时试图弄清楚)…然后你必须将命令"celery -A proj worker -l info放在app分支
上面"芹菜程序可以用来启动worker(你需要在proj上面的目录下运行worker):"根据docs