Django芹菜错误:attributeError:' entrypoint'对象没有属性' module_name'

发布于 2025-01-18 20:34:26 字数 3604 浏览 2 评论 0原文

我对 django-celery 非常陌生,它的文档让我感到困惑,我一直在关注教程,这里只是一个基本设置,我遇到了一个无法跟踪的错误,错误是: AttributeError:“EntryPoint”对象没有属性“module_name” 完整的回溯:

Traceback (most recent call last):
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 1250, in backend
    return self._local.backend
AttributeError: '_thread._local' object has no attribute 'backend'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/bootsteps.py", line 112, in start
    self.on_start()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 136, in on_start
    self.emit_banner()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 170, in emit_banner
    ' \n', self.startup_info(artlines=not use_image))),
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 232, in startup_info
    results=self.app.backend.as_uri(),
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 1252, in backend
    self._local.backend = new_backend = self._get_backend()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 955, in _get_backend
    backend, url = backends.by_url(
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/backends.py", line 69, in by_url
    return by_name(backend, loader), url
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/backends.py", line 47, in by_name
    aliases.update(load_extension_class_names(extension_namespace))
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/utils/imports.py", line 146, in load_extension_class_names
    yield ep.name, ':'.join([ep.module_name, ep.attrs[0]])
AttributeError: 'EntryPoint' object has no attribute 'module_name'

celery.py、init.py 和任务只是基本的: init.py:celery.py:task.py:celery

from __future__ import absolute_import, unicode_literals

from .celery import app as celery_app

__all__ = ('celery_app',)

from __future__ import absolute_import, unicode_literals 

from celery import Celery

import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

app = Celery('core')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()    

from celery import shared_task

@shared_task(bind=True)
def add(x, y):
    return x + y

设置conf是:


CELERY_BROKER_URL = 'localhost'
CELERY_ACCEPT_CONTENT = ['json',]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_BACKEND = 'django-db'

我还在已安装的应用程序中安装并添加了django_celery_result

INSTALLED_APPS = [
    ...
    'celery_practice',
    'django_celery_results'
]

供您参考,rabbitmq-server正在本地主机上运行,​​这就是为什么我将BROKER_URL设置为“本地主机”

 rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-04-03 16:14:04 PKT; 24h ago
   Main PID: 1005 (beam.smp)
     Status: "Initialized"
      Tasks: 91 (limit: 9090)

任何帮助将不胜感激,谢谢!

i am extremely new to django-celery, its doc have been confusing to me and i have been following tutorial, here is just a basic setup and i have encountered a untrackable error for me, the error is:
AttributeError: 'EntryPoint' object has no attribute 'module_name'
full traceback:

Traceback (most recent call last):
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 1250, in backend
    return self._local.backend
AttributeError: '_thread._local' object has no attribute 'backend'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/bootsteps.py", line 112, in start
    self.on_start()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 136, in on_start
    self.emit_banner()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 170, in emit_banner
    ' \n', self.startup_info(artlines=not use_image))),
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/apps/worker.py", line 232, in startup_info
    results=self.app.backend.as_uri(),
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 1252, in backend
    self._local.backend = new_backend = self._get_backend()
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/base.py", line 955, in _get_backend
    backend, url = backends.by_url(
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/backends.py", line 69, in by_url
    return by_name(backend, loader), url
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/app/backends.py", line 47, in by_name
    aliases.update(load_extension_class_names(extension_namespace))
  File "/home/muhammad/Desktop/celery/env/lib/python3.8/site-packages/celery/utils/imports.py", line 146, in load_extension_class_names
    yield ep.name, ':'.join([ep.module_name, ep.attrs[0]])
AttributeError: 'EntryPoint' object has no attribute 'module_name'

the celery.py, init.py and and task are just the basic:
init.py:

from __future__ import absolute_import, unicode_literals

from .celery import app as celery_app

__all__ = ('celery_app',)

celery.py:

from __future__ import absolute_import, unicode_literals 

from celery import Celery

import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

app = Celery('core')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()    

task.py:

from celery import shared_task

@shared_task(bind=True)
def add(x, y):
    return x + y

settings conf for celery is:


CELERY_BROKER_URL = 'localhost'
CELERY_ACCEPT_CONTENT = ['json',]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_BACKEND = 'django-db'

also i have installed and added django_celery_result in INSTALLED APPS

INSTALLED_APPS = [
    ...
    'celery_practice',
    'django_celery_results'
]

For your information, rabbitmq-server is running on localhost thats why i have set BROKER_URL TO 'localhost':

 rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-04-03 16:14:04 PKT; 24h ago
   Main PID: 1005 (beam.smp)
     Status: "Initialized"
      Tasks: 91 (limit: 9090)

any help would be appreciated thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文