我最初的问题是,当使用--detach标志运行celeni worker或使用celeni multi时,我的应用程序任务没有向worker注册(尽管worker确实启动并且可以访问,但这个问题也是一样的(。为了帮助调试这个问题,我制作了一个普通的芹菜应用程序,它有一个不同但可能相关的问题。
源结构
setup.py
example
| tasks.py
| celery.py
| __init__.py
| __main__.py
tasks.py:
from example.celery import app
@app.task
def add(x, y):
return x + y
celery.py
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379', include=["example.tasks"])
init.py
__version__ = "0.0.1"
__package__ = "example"
from example.celery import app
setup.py
from setuptools import setup
import example
setup(
name=example.__package__,
version=example.__version__,
include_package_data=True,
python_requires=">=3.7",
)
使用安装程序包$ pip install -e .
我现在可以从系统中的任何地方运行$ celery -A example worker
我将有一个工人来完成添加任务。添加--分离标志,如下所示:$ celery -A example.celery.app worker --detach --logfile=$HOME/celery.log
当应用程序配置为使用Redis:时,尝试将AMQPLAIN连接到celery.log文件时会出现错误
...
amqp.exceptions.AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.
所以我的理解是,当工作人员试图以分离模式加载芹菜应用程序时,会发生一些事情,但我不知道是什么。我们非常感谢任何协助。
使用芹菜==4.4.7
更新这适用于芹菜5.0.2,将打开一个bug票证。
这是我错过的一个已知错误。https://github.com/celery/celery/issues/6370