本文介绍了Celery worker ImportError:没有名为“项目”的模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试启动工作程序时,遇到一个问题:

导入错误:没有名为项目的模块

While I tried to start the worker I got a issue:
ImportError: No module named 'project'

回溯(最近一次通话最近):

Traceback (most recent call last):

  File "/usr/local/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/celery/__main__.py", line 16, in main
    _main()
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/celery.py", line 322, in main
    cmd.execute_from_commandline(argv)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/celery.py", line 496, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 273, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 479, in setup_app_from_commandline
    self.app = self.find_app(app)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 501, in find_app
    return find_app(app, symbol_by_name=self.symbol_by_name)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/utils.py", line 359, in find_app
    sym = symbol_by_name(app, imp=imp)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 504, in symbol_by_name
    return imports.symbol_by_name(name, imp=imp)
  File "/usr/local/lib/python3.5/dist-packages/kombu/utils/imports.py", line 56, in symbol_by_name
    module = imp(module_name, package=package, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/celery/utils/imports.py", line 104, in import_from_cwd
    return imp(module, package=package)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'project'

我正在ubuntu16.04中使用芹菜和Redis。以下是我的处理步骤:

I'm using a celery and redis in ubuntu16.04 .Following are my processing steps:

首先安装芹菜并redis:

First install celery and redis:

pip install -U celery[redis]

sudo apt-get install redis-server

当我使用时:

ps aux|grep redis

我可以看到redis列出了端口6379

I can see that redis is listing port 6379

第二个项目。设置添加:

Second in the project.setting add:

#Broker
BROKER_URL = 'redis://127.0.0.1:6379/0'
BROKER_TRANSPORT = 'redis'

项目文件夹下的第三版celery.py也位于此文件夹中:

Third build celery.py under project folder,project.setting is also in this folder:

from __future__ import absolute_import
import os
import django
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
django.setup()
app = Celery('project')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

在将要使用它的应用程序下Forth构建task.py

Forth build tasks.py under app that will use it

from project.celery import app


from random import Random
from django.core.mail import send_mail

from users.models import EmailVerifyRecord
from project.settings import EMAIL_FROM


@app.task
def random_str(randomlength=8):
    str = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(randomlength):
        str += chars[random.randint(0, length)]
    return str

所有这些步骤之后,在celery.py的相同路径下运行:

After all those steps, at the same path of celery.py I run:

celery -A project worker -l debug

然后我遇到了问题。

任何朋友都能帮忙吗?

非常感谢您!

推荐答案

这仅仅是因为您不在根项目中

It's just because you're not at your root project

导航到根项目,该目录与 manage.py

navigate toward your root project, the same directory as manage.py

cd path/to/project

并再次运行命令。

celery -A project worker -l debug

这篇关于Celery worker ImportError:没有名为“项目”的模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 13:42
查看更多