在我的学校项目中,Django与 Celery的集成现在出问题了
我在学校的项目里试图做一个网站,遇到了这个错误,不知道该怎么继续
mvc_worker.1.0loi6eqoh98b@docker-6 | worker: Warm shutdown (MainProcess)
mvc_worker.2.n430upc71wra@docker-6 |
mvc_worker.2.n430upc71wra@docker-6 | -------------- celery@b36996e0b059 v5.6.2 (recovery)
mvc_worker.2.n430upc71wra@docker-6 | --- ***** -----
mvc_worker.2.n430upc71wra@docker-6 | -- ******* ---- Linux-6.12.74+deb13+1-amd64-x86_64-with-musl1 2026-05-05 12:06:06
mvc_worker.2.n430upc71wra@docker-6 | - *** --- * ---
mvc_worker.2.n430upc71wra@docker-6 | - ** ---------- [config]
mvc_worker.2.n430upc71wra@docker-6 | - ** ---------- .> app: proyecto:0x7fa79ae41d30
mvc_worker.2.n430upc71wra@docker-6 | - ** ---------- .> transport: redis://redis:6379/0
mvc_worker.2.n430upc71wra@docker-6 | - ** ---------- .> results: redis://redis:6379/0
mvc_worker.2.n430upc71wra@docker-6 | - *** --- * --- .> concurrency: 2 (prefork)
mvc_worker.2.n430upc71wra@docker-6 | -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
mvc_worker.2.n430upc71wra@docker-6 | --- ***** -----
mvc_worker.2.n430upc71wra@docker-6 | -------------- [queues]
mvc_worker.2.n430upc71wra@docker-6 | .> celery exchange=celery(direct) key=celery
mvc_worker.2.n430upc71wra@docker-6 |
mvc_worker.2.n430upc71wra@docker-6 |
mvc_worker.2.n430upc71wra@docker-6 | [tasks]
mvc_worker.2.n430upc71wra@docker-6 | . tienda.tasks.enviar_correo_bienvenida
mvc_worker.2.n430upc71wra@docker-6 | . tienda.tasks.enviar_correo_confirmacion
mvc_worker.2.n430upc71wra@docker-6 | . tienda.tasks.enviar_correo_recuperacion
mvc_worker.2.n430upc71wra@docker-6 | . tienda.tasks.process_purchase
mvc_worker.2.n430upc71wra@docker-6 |
mvc_worker.2.n430upc71wra@docker-6 | [2026-05-05 12:06:06,950: INFO/MainProcess] Connected to redis://redis:6379/0
mvc_worker.2.n430upc71wra@docker-6 | [2026-05-05 12:06:06,961: INFO/MainProcess] mingle: searching for neighbors
mvc_worker.2.n430upc71wra@docker-6 | [2026-05-05 12:06:07,992: INFO/MainProcess] mingle: all alone
mvc_worker.2.n430upc71wra@docker-6 | [2026-05-05 12:06:08,066: INFO/MainProcess] celery@b36996e0b059 ready.
mvc_worker.2.ks7d5niodjfq@docker-4 | ^^^^^^^^^^^^^^^^^^^^^^^^
mvc_worker.2.ks7d5niodjfq@docker-4 | AttributeError: module 'proyecto.celery' has no attribute 'user_options'
mvc_worker.1.m5xkx8xasgww@docker-6 | Traceback (most recent call last):
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/bin/celery", line 6, in <module>
mvc_worker.1.m5xkx8xasgww@docker-6 | sys.exit(main())
mvc_worker.1.m5xkx8xasgww@docker-6 | ~~~~^^
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/celery/__main__.py", line 15, in main
mvc_worker.1.m5xkx8xasgww@docker-6 | sys.exit(_main())
mvc_worker.1.m5xkx8xasgww@docker-6 | ~~~~~^^
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/celery/bin/celery.py", line 227, in main
mvc_worker.1.m5xkx8xasgww@docker-6 | return celery(auto_envvar_prefix="CELERY")
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/core.py", line 1485, in __call__
mvc_worker.1.m5xkx8xasgww@docker-6 | return self.main(*args, **kwargs)
mvc_worker.1.m5xkx8xasgww@docker-6 | ~~~~~~~~~^^^^^^^^^^^^^^^^^
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/core.py", line 1406, in main
mvc_worker.1.m5xkx8xasgww@docker-6 | rv = self.invoke(ctx)
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/core.py", line 1870, in invoke
mvc_worker.1.m5xkx8xasgww@docker-6 | super().invoke(ctx)
mvc_worker.1.m5xkx8xasgww@docker-6 | ~~~~~~~~~~~~~~^^^^^
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/core.py", line 1269, in invoke
mvc_worker.1.m5xkx8xasgww@docker-6 | return ctx.invoke(self.callback, **ctx.params)
mvc_worker.1.m5xkx8xasgww@docker-6 | ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/core.py", line 824, in invoke
mvc_worker.1.m5xkx8xasgww@docker-6 | return callback(*args, **kwargs)
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/click/decorators.py", line 34, in new_func
mvc_worker.1.m5xkx8xasgww@docker-6 | return f(get_current_context(), *args, **kwargs)
mvc_worker.1.m5xkx8xasgww@docker-6 | File "/usr/local/lib/python3.14/site-packages/celery/bin/celery.py", line 158, in celery
mvc_worker.1.m5xkx8xasgww@docker-6 | worker.params.extend(ctx.obj.app.user_options.get('worker', []))
mvc_worker.1.m5xkx8xasgww@docker-6 | ^^^^^^^^^^^^^^^^^^^^^^^^
mvc_worker.1.m5xkx8xasgww@docker-6 | AttributeError: module 'proyecto.celery' has no attribute 'user_options'
有人知道这个错误是什么吗?
我的celery.py看起来是这样的
from celery import Celery
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proyecto.settings')
django.setup()
app = Celery('proyecto')
app.config_from_object('django.conf:settings', namespace="CELERY")
app.user_options = {}
app.autodiscover_tasks()
Celery正在Docker Swarm上与我其他服务一起运行,连接看起来很好(它能够连接到Redis等),但发送给Celery的任何任务都不会执行。
解决方案
从你的错误日志来看,你似乎在使用Python 3.14和 Celery 5.6.2。然而截至目前,Celery似乎还没有对Python 3.14提供全面支持。
虽然据说Celery 5.6.0已经对Python 3.14提供了初步支持,但由于并非完整支持,仍可能会出错。请参阅 5.6.0的更新日志
我建议你使用Python 3.13,因为它目前对Celery的支持是完整的。请参阅 PyPi上受支持的版本
备选方案
根本原因似乎是AttributeError:
AttributeError: module 'proyecto.celery' has no attribute 'user_options'
你可以尝试在你的docker上按如下方式显式启动Celery应用:
celery -A proyecto.celery:app worker -l info
这样对象 user_options 应该是可用的,因为它存在于 proyecto.celery.app,而不是直接在模块 proyecto.celery 上。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。