在测试一个简单的芹菜示例时,我不断收到以下错误。
AttributeError: 'EntryPoints' object has no attribute 'get'
使用以下 CLI 命令:
celery -A ctest worker --loglevel=INFO
我使用的主要模块版本如下。 (从 requirements.txt 中提取的版本):
而我使用的Python版本是3.12
我已经尝试过从以下链接提供的解决方案
按照建议修复了芹菜的版本。我期待这可以解决问题,但事实并非如此。
pip install celery==5.2.3
有人遇到过这个问题吗?关于如何解决它有什么建议吗?
供您参考,我已经跟踪错误并通过将 group="value" 参数传递给 entry_point 方法来修复源文件的相关行,其中 value 是命名空间 .. 等,这似乎解决了问题,但我没有相信这是解决问题的正确方法。以下是我修改相应文件所采取的步骤。
1-修复一个
ERROR
File "/home/../.envs/.zppEnv/lib/python3.12/site-packages/kombu/utils/compat.py", line 82, in entrypoints
for ep in importlib_metadata.entry_points().get(namespace, [])
SOLUTION
I modified line 82 in the ..../compat.py file and changed it from
for ep in importlib_metadata.entry_points().get(namespace, [])
to
for ep in importlib_metadata.entry_points(group ='namespace') #.get(namespace, [])
2-修复两个
ERROR
File "/home/../.envs/.zppEnv/lib/python3.12/site-packages/celery/bin/celery.py", line 79, in <module>
@with_plugins(entry_points().get('celery.commands', [])
SOLUTION
I modified line 79 in the .. bin/celery.py and changed the error line of the decorator from
@with_plugins(entry_points().get('celery.commands', [])
to
@with_plugins(entry_points(group = 'celery.commands') #.get('celery.commands', [])
3-修复三:
ERROR
File "/home/../.envs/.zppEnv/lib/python3.12/site-packages/celery/utils/imports.py", line 146, in load_extension_class_names
for ep in entry_points().get().get(namespace, []):
SOLUTION
I amended the error line to the following as is the case for FIX ONE above
for ep in importlib_metadata.entry_points(group ='namespace') #.get(namespace, [])
以上三个修复似乎已经解决了问题,celery 开始运行了。
-------------- [queues]
.> celery exchange=celery(direct) key=celery
我确信上述解决方案出于各种原因是不正确的,如果有明显的遗漏请告诉我。我是这个领域的新手,也许我犯了初学者错误。
提前感谢您的帮助。