AttributeError: 'EntryPoints' 对象没有属性 'get'

问题描述 投票:0回答:0

在测试一个简单的芹菜示例时,我不断收到以下错误。

AttributeError: 'EntryPoints' object has no attribute 'get'

使用以下 CLI 命令:

celery -A ctest  worker --loglevel=INFO

我使用的主要模块版本如下。 (从 requirements.txt 中提取的版本):

  1. 芹菜==5.2.7
  2. 导入库元数据==4.13.0
  3. 昆布==5.2.4

而我使用的Python版本是3.12

我已经尝试过从以下链接提供的解决方案

https://stackoverflow.com/questions/71740863/django-celery-error-unrecoverable-error-attributeerorentrypoint-object-ha/ 76149751#76149751 和各种链接中推荐的其他修复。

按照建议修复了芹菜的版本。我期待这可以解决问题,但事实并非如此。

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
   

我确信上述解决方案出于各种原因是不正确的,如果有明显的遗漏请告诉我。我是这个领域的新手,也许我犯了初学者错误。

提前感谢您的帮助。

python celery python-importlib kombu
© www.soinside.com 2019 - 2024. All rights reserved.