Django项目启动Celery提示Module 'src.project_auth'无celery属性求解
问题原因
- Celery启动命令的
--app参数指定错误:你将Celery实例定义在src/celery.py模块中,但启动时指定了src.project_auth作为应用入口,该模块下没有Celery实例,因此触发报错。 - Celery配置读取异常:你在settings.py中将所有Celery配置放在了
CELERY_CONFIG字典中,但你初始化Celery时指定了namespace='CELERY',Celery只会读取settings.py下前缀为CELERY_的顶级变量,无法识别封装在字典内的配置。 - 缺少必要配置项:你使用RabbitMQ作为消息队列,但未配置
CELERY_BROKER_URL;同时你安装了django_celery_results却将CELERY_RESULT_BACKEND设为None,配置不匹配。
解决步骤
- 修正Celery启动命令
在项目根目录(与src文件夹同级的目录)执行以下命令即可:
celery --app src worker --loglevel=info
- 修正settings.py中的Celery配置
删除原有CELERY_CONFIG字典,替换为以下顶级配置项:
CELERY_TASK_SERIALIZER = "json" CELERY_ACCEPT_CONTENT = ["json"] CELERY_RESULT_SERIALIZER = "json" # 配合django_celery_results存储任务结果 CELERY_RESULT_BACKEND = "django-db" CELERY_TIMEZONE = "UTC" CELERY_ENABLE_UTC = True CELERY_ENABLE_REMOTE_CONTROL = False # 配置RabbitMQ消息队列地址,服务名对应docker-compose中的cache服务 CELERY_BROKER_URL = "amqp://guest:guest@cache:5672//"
- 执行数据库迁移
你引入了django_celery_results组件,需要执行迁移创建对应数据表:
python manage.py migrate
- (可选)补充docker-compose Celery服务配置
可以直接在docker-compose.yml的services节点下添加Celery worker服务,无需每次手动进入容器启动:
celery_worker: build: . command: celery --app src worker --loglevel=info volumes: - .:/code depends_on: - db - cache container_name: ${COMPOSE_PROJECT_NAME}_celery_worker
完成以上操作后重启服务即可正常启动Celery。
内容的提问来源于stack exchange,提问作者Chuck.h5
相关产品推荐
相关产品推荐

