You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django集成Celery启动worker无celery属性及amqp模块缺失如何解决

解决方案


问题1:Module 'flakefinder' has no attribute 'celery' 报错解决

Celery默认会在你通过-A参数指定的模块下寻找名为celery的实例,你当前的Celery实例存放在celeryApp.py文件中,且实例名为app,两种可选修复方案选其一即可:

  • 方案1:修改FlakeFinder/__init__.py文件,添加以下代码,将celery实例导出到模块顶层
    from __future__ import absolute_import, unicode_literals
    from .celeryApp import app as celery
    
    __all__ = ('celery',)
    
    改完后即可直接使用原命令celery -A FlakeFinder worker -l INFO启动。
  • 方案2:启动命令直接指定实例名,将命令改为
    celery -A FlakeFinder.celeryApp:app worker -l INFO
    

问题2:ModuleNotFoundError: No module named 'celery.backends.amqp' 报错解决

该报错是因为Celery 5.0+版本已经正式移除了旧的amqp结果后端,你需要修改Django的settings.py配置:
找到CELERY_RESULT_BACKEND配置项,将值从amqp改为rpc://即可;如果需要持久化存储任务结果,也可以改为django-db(需额外安装django-celery-results依赖包)。


额外配置修正建议

  1. 你当前FlakeFinder/tasks.py中的导入路径存在隐患,将from celeryApp import app改为from FlakeFinder.celeryApp import app,避免相对导入找不到模块的问题。
  2. celeryApp.py中定时任务的配置写错了任务名,将'task': 'scraping.tasks'改为'task': 'FlakeFinder.tasks.update_snow_locs',否则定时任务触发时会找不到对应的执行函数。

内容的提问来源于stack exchange,提问作者adamcircle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 07:45:00