python芹菜没有名为app.tasks的模块
我正在尝试从芹菜运行演示应用程序 项目目录是/usr/local/projpython芹菜没有名为app.tasks的模块,python,linux,celery,Python,Linux,Celery,我正在尝试从芹菜运行演示应用程序 项目目录是/usr/local/proj [root@merit1 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@merit1 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
还有芹菜
from __future__ import absolute_import
from celery import Celery
app = Celery('proj',
broker='amqp://guest@localhost//',
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/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)
ImportError: No module named app.tasks
我现在得到这个错误
[root@merit1 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
[root@merit1本地]#芹菜工人--app=proj-l信息
回溯(最近一次呼叫最后一次):
文件“/usr/bin/芹菜”,第9行,在
加载入口点(“芹菜==3.1.7”,“控制台脚本”,“芹菜”)()
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/__main__.py”,第30行,在main中
main()
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/cellery.py”,第80行,主文件
cmd.从命令行(argv)执行命令
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/cellery.py”,第723行,从命令行执行
超级(CeleryCommand,self)。从命令行(argv)执行命令)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/base.py”,第303行,执行命令行
返回self.handle_argv(self.prog_名称,argv[1:])
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/cellery.py”,第715行,在handle_argv中
返回self.execute(命令,argv)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/cellery.py”,第669行,执行
).run_from_argv(self.prog_name,argv[1:],command=argv[0])
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/worker.py”,第175行,运行中来自
返回自我(*参数,**选项)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/base.py”,第266行,在调用中__
ret=self.run(*args,**kwargs)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/bin/worker.py”,第208行,运行中
state\u db=self.node\u格式(state\u db,主机名),**kwargs
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/worker/_init__.py”,第95行,in__init__
self.app.loader.init_worker()
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/loaders/base.py”,第128行,在init_中
self.import\u默认\u模块()
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/loaders/base.py”,第121行,在导入默认模块中
元组(可能是列表(self.app.conf.芹菜)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/loaders/base.py”,第103行,在导入任务模块中
返回self.import\u from\u cwd(模块)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/loaders/base.py”,第112行,从cwd导入
包装=包装,
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/utils/imports.py”,第101行,从cwd导入
返回imp(模块,包=包)
文件“/usr/lib64/python2.6/contextlib.py”,第34行,在__
self.gen.throw(类型、值、回溯)
文件“/usr/lib/python2.6/site packages/celery-3.1.7-py2.6.egg/celery/utils/imports.py”,第64行,位于cwd_in_路径中
产量cwd
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/utils/imports.py”,第101行,从cwd导入
返回imp(模块,包=包)
文件“/usr/lib/python2.6/site packages/cellery-3.1.7-py2.6.egg/cellery/loaders/base.py”,第106行,在导入模块中
返回importlib.import\u模块(模块,包=包)
导入模块第37行的文件“/usr/lib/python2.6/site packages/importlib-1.0.2-py2.6.egg/importlib/_init__.py”
__导入(名称)
文件“/usr/local/proj/tasks.py”,第8行,在
@应用程序任务
TypeError:“模块”对象不可调用
将您的包含更改为:
app = Celery('proj',
broker='amqp://guest@localhost//',
backend='amqp://',
include=['proj.tasks'])
看
include–每个工作人员应导入的模块列表
从tasks.py中取出第一行,从未来导入绝对导入中删除
app = Celery('proj',
broker='amqp://guest@localhost//',
backend='amqp://',
include=['proj.tasks'])