python - 使用 Python 3 时,Celery 'module' 对象没有属性 'app'

标签 python python-3.x celery

我正在学习 Celery 教程。他们正在使用 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()

tasks.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)

当我尝试运行 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'

我做错了什么以及如何解决这个问题?

最佳答案

当你使用 celery -A proj worker 运行 Celery 时

AttributeError: 'module' object has no attribute 'app'
...
AttributeError: 'module' object has no attribute 'celery'

告诉你它试图找到:

a) app 实例

b) proj.celery 模块

因此,您可以将 from celery_proj import app 添加到 __init__.py 或将 celery_proj.py 重命名为 celery.py

或者您可以将 Celery 作为 celery -A proj.celery_proj worker

运行

我找到了答案 here因为这里没有关于 stackoverflow 的答案对我有帮助。

关于python - 使用 Python 3 时,Celery 'module' 对象没有属性 'app',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30743267/

相关文章:

ubuntu - 在 Ubuntu 中将 CELERY 作为守护进程运行

python - 为什么向 Celery 添加参数会导致 Python 测试出错?

python - 使用 Python 3.1 提交登录表单

python - 映射两个嵌套列表的排列

Python 套接字 [WinError 10057]?

python - 如何删除两列之间的重复项,但在各自的列中保留唯一值?

python - 本地机器上的图像在图像查看器上正确显示,但在使用 cv2.imread() 时无法正确读取?

python - 试图弄清楚 'with..as' 构造在 python 中是如何工作的

Python 3、以太坊——如何发送 ERC20 代币?

python - 如何调试在 Eclipse 中本地运行的 Celery/Django 任务