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

Django+Celery+Redis异步股票更新应用Celery启动报错求助

解决Celery默认连接AMQP而非Redis的问题

核心问题分析

你启动Celery时使用了错误的应用入口参数,导致Celery没有加载settings.py和celery.py中配置的Redis Broker,转而使用默认的AMQP(RabbitMQ)连接,从而触发连接拒绝错误。

分步解决方案

1. 修正Celery启动命令

你的celery.py中定义的Celery应用名为myproject,启动时需要指定这个应用作为入口,而非默认的celery。将启动命令改为:

celery -A myproject worker -l info

如果需要同时启动Beat调度器,使用:

celery -A myproject worker -B -l info

2. 确认celery.py的位置与初始化配置

确保celery.py文件放在项目的根包目录下(与settings.py同级),目录结构应类似:

myproject/
├── myproject/
│   ├── __init__.py
│   ├── celery.py
│   └── settings/
│       └── _base.py
└── manage.py

同时在myproject/__init__.py中添加以下代码,确保Django启动时能识别Celery应用:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

3. 验证Redis连接状态

执行以下命令确认Redis服务正常运行且可连通:

redis-cli ping

返回PONG则说明Redis正常;若无响应,检查Redis服务是否正确启动、端口是否为6379。

4. 确认配置加载逻辑

celery.py中的配置加载代码是正确的,它会自动读取settings.py中以CELERY_为前缀的配置项:

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

你的settings.py配置无需修改。

5. 检查环境变量设置

确保celery.py中设置的Django settings模块路径正确:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings._base')

如果你的settings文件路径不同,需对应修改该值。

测试启动

完成上述步骤后重新启动Celery,日志中应显示使用Redis作为transport:

[config]
.> app:         myproject:0x101ecc220 (.default.Loader)
.> transport:   redis://localhost:6379//
.> results:     redis://localhost:6379//
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:19:58