首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Celery Worker错误: ImportError没有名为celery的模块

Celery Worker错误: ImportError没有名为celery的模块
EN

Stack Overflow用户
提问于 2013-10-25 05:37:30
回答 1查看 58.1K关注 0票数 25

当我尝试启动我的芹菜工人时,我得到了一个导入错误。我不确定问题出在哪里。任何帮助都将不胜感激。

我的项目:

代码语言:javascript
复制
email/__init__.py
    /celery.py

我尝试通过调用以下命令来运行应用程序:

代码语言:javascript
复制
celery worker --app=email

我遵循了这里的所有步骤-- http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#about-the-app-argument

回溯:

代码语言:javascript
复制
File "/Users/.../bin/celery", line 9, in <module>
    load_entry_point('celery==3.0.24', 'console_scripts', 'celery')()
File "/Users/.../lib/python2.7/site-packages/celery/__main__.py, line 14, in main
main()
File "/Users/.../lib/python2.7/site-packages/celery/bin/celery.py", line 957, in main
cmd.execute_from_commandline(argv)
File "/Users/.../lib/python2.7/site-packages/celery/bin/celery.py", line 901, in execute_from_commandline
super(CeleryCommand, self).execute_from_commandline(argv)))
File "/Users/.../lib/python2.7/site-packages/celery/bin/base.py", line 185, in execute_from_commandline
argv = self.setup_app_from_commandline(argv)
File "/Users/.../lib/python2.7/site-packages/celery/bin/base.py", line 300, in setup_app_from_commandline
self.app = self.find_app(app)
File "/Users/.../lib/python2.7/site-packages/celery/bin/base.py", line 317, in find_app
return self.find_app('%s.celery:' % (app.replace(':', ''), ))
File "/Users/.../lib/python2.7/site-packages/celery/bin/base.py", line 311, in find_app
sym = self.symbol_by_name(app)
File "/Users/.../lib/python2.7/site-packages/celery/bin/base.py", line 322, in symbol_by_name
return symbol_by_name(name, imp=import_from_cwd)
File "/Users/.../lib/python2.7/site-packages/kombu/utils/__init__.py", line 80, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
File "/Users/.../lib/python2.7/site-packages/celery/utils/imports.py", line 99, in import_from_cwd
return imp(module, package=package)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named celery

这是我的celery.py

代码语言:javascript
复制
from __future__ import absolute_import

from celery import Celery
from app import mail

celery = Celery('email.celery', 
                broker = 'amqp://guest:guest@localhost:5672//',
                backend = 'amqp://')

if __name__ == '__main__':
    celery.start()

@celery.task
def send_email(nickname, email):
    mail.send(msg) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-12 03:13:52

问题是你在说“嘿,兄弟,我听说你喜欢芹菜,吃点芹菜吧”。

但实际上你应该说,“嘿,兄弟,我听说你安装了芹菜,让我们做一个非常相似的文件,这样我们就不会把我们的环境搞混了”。

email/celery.py文件重命名为email/celery_app.py

然后,在启动worker时,执行以下操作:

代码语言:javascript
复制
celery -A email worker --app=email.celery_app:app --loglevel=info # etc.

关键是您的文件结构中不需要包含名为celery.py的文件,但是如果您没有这样做,那么您就不能依靠芹菜来查找芹菜,所以您必须通过手动指定--app来指出它。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19577172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档