I am getting an import error when I try to start my celery worker. I am not sure what the issue is. Any help would be highly appreciated.
My project:
email/__init__.py /celery.py I try to run the application by calling :
celery worker --app=email I have followed all the steps here -
The traceback:
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/", line 37, in import_module __import__(name) ImportError: No module named celery Here is my celery.py
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) 22 Answers
The problem is that you're saying "hey bro I heard you liked celery have some celery".
But really you should be saying, "hey bro I heard you installed celery, lets make a file named something really similar so we don't confuse the hell out of our environment".
Rename your email/celery.py file to email/celery_app.py
Then, when you start your worker, do the following:
celery -A email worker --app=email.celery_app:app --loglevel=info # etc. The key is that you need to not have the file named celery.py in your file-structure, but if you don't, then you can't rely on celery to find celery, so you have to point it by specifying --app manually.
I was actually having a similar issue, assuming you were following the Next Steps tutorial and all I had to do to resolve the issue was run the worker from the directory above proj, that is, assuming you're currently in the proj directory run:
cd .. celery -A proj worker -l info It's working for me now.
0