Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Starting Celery: AttributeError: 'module' object has no attribute 'celery'

Tags:

I try to start a Celery worker server from a command line:

celery -A tasks worker --loglevel=info 

The code in tasks.py:

import os os.environ[ 'DJANGO_SETTINGS_MODULE' ] = "proj.settings"  from celery import task  @task() def add_photos_task( lad_id ): ... 

I get the next error:

Traceback (most recent call last):   File "/usr/local/bin/celery", line 8, in <module>     load_entry_point('celery==3.0.12', 'console_scripts', 'celery')()   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/__main__.py", line 14, in main     main()   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/celery.py", line 946, in main     cmd.execute_from_commandline(argv)   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/celery.py", line 890, in execute_from_commandline     super(CeleryCommand, self).execute_from_commandline(argv)))   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 177, in execute_from_commandline     argv = self.setup_app_from_commandline(argv)   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 295, in setup_app_from_commandline     self.app = self.find_app(app)   File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 313, in find_app     return sym.celery AttributeError: 'module' object has no attribute 'celery' 

Does anybody know why the 'celery' attribute cannot be found? Thank you for help.

The operating system is Linux Debian 5.

Edit. May be the clue. Could anyone explain me the next comment to a function (why we must be sure that it finds modules in the current directory)?

# from celery/utils/imports.py def import_from_cwd(module, imp=None, package=None):     """Import module, but make sure it finds modules     located in the current directory.      Modules located in the current directory has     precedence over modules located in `sys.path`.     """     if imp is None:         imp = importlib.import_module     with cwd_in_path():         return imp(module, package=package) 
like image 390
sergzach Avatar asked Nov 25 '12 20:11

sergzach


2 Answers

I forgot to create a celery object in tasks.py:

from celery import Celery from celery import task    celery = Celery('tasks', broker='amqp://guest@localhost//') #!  import os  os.environ[ 'DJANGO_SETTINGS_MODULE' ] = "proj.settings"  @task() def add_photos_task( lad_id ): ... 

After that we could normally start tasks:

celery -A tasks worker --loglevel=info 
like image 190
sergzach Avatar answered Sep 25 '22 07:09

sergzach


For anyone who is getting the same error message for an apparently different reason, note that if any of the imports in your initialization file fail, your app will raise this totally ambiguous AttributeError rather than the exception that initially caused it.

like image 39
kellanburket Avatar answered Sep 22 '22 07:09

kellanburket