我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理。我无法弄清楚我到底做错了什么,但尽管控制台日志消息告诉我 Redis 正在运行并接受连接(事实上,当我这样做时)docker ps
,我可以看到容器正在运行),我仍然收到有关连接被拒绝的错误。我什至做到了
docker exec -it <redis_container_name> redis-cli
ping
并看到回应是PONG
.
这是我的 Celery 设置settings.py
:
BROKER_URL = 'redis://localhost:6379/0'
BROKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = "UTC"
这是我的 Redis 容器设置docker-compose.yml
:
redis:
image: redis
ports:
- "6379:6379"
我记得链接redis
容器与我的web
容器也是如此。我可以很好地启动服务器,但是当我尝试将任何内容上传到网站时,出现连接拒绝错误。究竟出了什么问题?
EDIT:我记得使用 VBoxManage 进行端口转发,这样我就可以转到我的浏览器并访问我的网站localhost:8000
,所以我似乎不需要使用虚拟机的IP而不是localhost
for my settings.py
.
EDIT 2: 如果我更换localhost
在设置中使用 IP 地址docker-machine
VM 或 Redis 容器的 IP 地址,然后发生的情况是,当我上传文件时,我很快在网站上收到一条错误的成功消息,但实际上没有上传任何内容。底层上传功能,insertIntoDatabase()
, uses delay
.