2013-12-23 38 views
0

我試圖運行從芹菜演示應用程序蟒蛇芹菜沒有名爲模塊app.tasks

項目目錄是/ usr /本地/凸出

[[email protected] proj]# ls -lh 
total 16K 
-rw-r--r--. 1 root root 363 Dec 23 00:36 celery.py 
-rw-r--r--. 1 root root 522 Dec 23 00:36 celery.pyc 
-rw-r--r--. 1 root root 0 Dec 23 00:22 __init__.py 
-rw-r--r--. 1 root root 114 Dec 23 00:36 __init__.pyc 
-rw-r--r--. 1 root root 211 Dec 23 00:37 tasks.py 

和celery.py

from __future__ import absolute_import 

from celery import Celery 

app = Celery('proj', 
      broker='amqp://[email protected]//', 
      backend='amqp://', 
      include=['app.tasks']) 

# Optional configuration, see the application user guide. 
app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600, 
) 

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

和tasks.py包含

from __future__ import absolute_import 

from proj.celery import app 


@app.task 
def add(x, y): 
    return x + y 


@app.task 
def mul(x, y): 
    return x * y 


@app.task 
def xsum(numbers): 
    return sum(numbers) 

然而,當我運行從/ usr /本地芹菜,我得到這個錯誤

celery worker --app=proj -l info 
Traceback (most recent call last): 
    File "/usr/bin/celery", line 9, in <module> 
    load_entry_point('celery==3.1.7', 'console_scripts', 'celery')() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/__main__.py", line 30, in main 
    main() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 80, in main 
    cmd.execute_from_commandline(argv) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 723, in execute_from_commandline 
    super(CeleryCommand, self).execute_from_commandline(argv))) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/base.py", line 303, in execute_from_commandline 
    return self.handle_argv(self.prog_name, argv[1:]) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 715, in handle_argv 
    return self.execute(command, argv) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 669, in execute 
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0]) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/worker.py", line 175, in run_from_argv 
    return self(*args, **options) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/base.py", line 266, in __call__ 
    ret = self.run(*args, **kwargs) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/worker.py", line 208, in run 
    state_db=self.node_format(state_db, hostname), **kwargs 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/worker/__init__.py", line 95, in __init__ 
    self.app.loader.init_worker() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 128, in init_worker 
    self.import_default_modules() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 121, in import_default_modules 
    tuple(maybe_list(self.app.conf.CELERY_INCLUDE)) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 103, in import_task_module 
    return self.import_from_cwd(module) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 112, in import_from_cwd 
    package=package, 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 101, in import_from_cwd 
    return imp(module, package=package) 
    File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__ 
    self.gen.throw(type, value, traceback) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 64, in cwd_in_path 
    yield cwd 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 101, in import_from_cwd 
    return imp(module, package=package) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 106, in import_module 
    return importlib.import_module(module, package=package) 
    File "/usr/lib/python2.6/site-packages/importlib-1.0.2-py2.6.egg/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named app.tasks 

什麼想法?

UPDATE:

更新celery.py到

from __future__ import absolute_import 

from celery import Celery 

app = Celery('proj', 
      broker='amqp://[email protected]//', 
      backend='amqp://', 
      include=['proj.tasks']) 

# Optional configuration, see the application user guide. 
app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600, 
) 

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

現在我得到這個錯誤

[[email protected] local]# celery worker --app=proj -l info 
Traceback (most recent call last): 
    File "/usr/bin/celery", line 9, in <module> 
    load_entry_point('celery==3.1.7', 'console_scripts', 'celery')() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/__main__.py", line 30, in main 
    main() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 80, in main 
    cmd.execute_from_commandline(argv) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 723, in execute_from_commandline 
    super(CeleryCommand, self).execute_from_commandline(argv))) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/base.py", line 303, in execute_from_commandline 
    return self.handle_argv(self.prog_name, argv[1:]) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 715, in handle_argv 
    return self.execute(command, argv) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/celery.py", line 669, in execute 
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0]) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/worker.py", line 175, in run_from_argv 
    return self(*args, **options) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/base.py", line 266, in __call__ 
    ret = self.run(*args, **kwargs) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/bin/worker.py", line 208, in run 
    state_db=self.node_format(state_db, hostname), **kwargs 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/worker/__init__.py", line 95, in __init__ 
    self.app.loader.init_worker() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 128, in init_worker 
    self.import_default_modules() 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 121, in import_default_modules 
    tuple(maybe_list(self.app.conf.CELERY_INCLUDE)) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 103, in import_task_module 
    return self.import_from_cwd(module) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 112, in import_from_cwd 
    package=package, 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 101, in import_from_cwd 
    return imp(module, package=package) 
    File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__ 
    self.gen.throw(type, value, traceback) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 64, in cwd_in_path 
    yield cwd 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py", line 101, in import_from_cwd 
    return imp(module, package=package) 
    File "/usr/lib/python2.6/site-packages/celery-3.1.7-py2.6.egg/celery/loaders/base.py", line 106, in import_module 
    return importlib.import_module(module, package=package) 
    File "/usr/lib/python2.6/site-packages/importlib-1.0.2-py2.6.egg/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/usr/local/proj/tasks.py", line 8, in <module> 
    @app.task 
TypeError: 'module' object is not callable 
+0

您的芹菜版? – latheiere

+0

芹菜3.1.7版本 – krisdigitx

回答

2

改變您的包括對:

app = Celery('proj', 
     broker='amqp://[email protected]//', 
     backend='amqp://', 
     include=['proj.tasks']) 

參見celery application doc

include - 每個工人應導入的模塊列表。

+0

得到一個新的錯誤...粘貼上面... – krisdigitx

+1

從tasks.py中取出第一行,刪除'from __future__ import absolute_import' –

相關問題