pyt*_*had 5 python celery python-3.x
我正在学习芹菜教程。他们正在使用 Python2,而我正在尝试使用 python3 实现相同的功能。
我有2个文件:
celery_proj.py :
from celery import Celery
app = Celery(
'proj', broker='amqp://', backend='amqp://', include=['proj.tasks'])
app.conf.update(Celery_TAST_RESULT_EXPIRES=3600,)
if __name__ == '__main__':
app.start()
Run Code Online (Sandbox Code Playgroud)
和任务.py:
from celery_proj 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)
Run Code Online (Sandbox Code Playgroud)
当我尝试跑步时,celery -A proj worker -l info我得到:
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/celery/app/utils.py", line 235, in find_app
found = sym.app
AttributeError: 'module' object has no attribute 'app'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/celery", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.4/dist-packages/celery/__main__.py", line 30, in main
main()
File "/usr/local/lib/python3.4/dist-packages/celery/bin/celery.py", line 81, in main
cmd.execute_from_commandline(argv)
File "/usr/local/lib/python3.4/dist-packages/celery/bin/celery.py", line 769, in execute_from_commandline
super(CeleryCommand, self).execute_from_commandline(argv)))
File "/usr/local/lib/python3.4/dist-packages/celery/bin/base.py", line 309, in execute_from_commandline
argv = self.setup_app_from_commandline(argv)
File "/usr/local/lib/python3.4/dist-packages/celery/bin/base.py", line 469, in setup_app_from_commandline
self.app = self.find_app(app)
File "/usr/local/lib/python3.4/dist-packages/celery/bin/base.py", line 489, in find_app
return find_app(app, symbol_by_name=self.symbol_by_name)
File "/usr/local/lib/python3.4/dist-packages/celery/app/utils.py", line 240, in find_app
found = sym.celery
AttributeError: 'module' object has no attribute 'celery'
Run Code Online (Sandbox Code Playgroud)
我做错了什么以及如何解决这个问题?
小智 7
当你运行 Celery 时celery -A proj worker
AttributeError: 'module' object has no attribute 'app'
...
AttributeError: 'module' object has no attribute 'celery'
Run Code Online (Sandbox Code Playgroud)
告诉你它试图找到:
a)app实例
b)proj.celery模块
因此,您可以添加from celery_proj import app到__init__.py或重命名celery_proj.py为celery.py。
或者你可以运行 Celerycelery -A proj.celery_proj worker
我在这里找到了答案,因为 stackoverflow 上没有答案对我有帮助。
如果您使用的是 Python 3,则可以通过以下方式使用绝对导入:from __future__ import absolute_import
celery.py这是我最近的一个 Python 3、Django 1.7 应用程序的示例:
from __future__ import absolute_import
import os
import django
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_app.settings')
django.setup()
app = Celery('my_app')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9959 次 |
| 最近记录: |