python celery -A 的无效值无法加载应用程序

Azi*_*ima 7 python celery celery-task

我有一个以下项目目录:

azima:
    __init.py
    main.py
    tasks.py
Run Code Online (Sandbox Code Playgroud)

任务.py

from .main 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)

主要.py

from celery import Celery

app = Celery('azima', backend='redis://localhost:6379/0', broker='redis://localhost:6379/0', include=['azima.tasks'])

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

if __name__ == '__main__':
    app.start()
Run Code Online (Sandbox Code Playgroud)

当我运行命令来初始化 celery 工作人员时,出现以下错误:

(azima_venv) brightseid@darkseid:~$ celery -A azima worker -l INFO
Usage: celery [OPTIONS] COMMAND [ARGS]...

Error: Invalid value for '-A' / '--app': 
Unable to load celery application.
Module 'azima' has no attribute 'celery'
Run Code Online (Sandbox Code Playgroud)

但是当我重命名main.pycelery.py之前的名称时就没有问题了。

我在这里缺少什么?

Pat*_*cio 8

有两种方法

  1. 将您的导入appazima/__init__.py
from azima.main import app
    
celery = app  # you can omit this line
Run Code Online (Sandbox Code Playgroud)

您可以省略最后一行,celery 将从导入中识别 celery 应用程序。然后你打电话celery -A azima worker -l INFO

  1. 打电话给你的应用程序就像celery -A azima.main worker -l INFO