当前位置: 首页 > 面试题库 >

Redis + Docker + Django-错误111连接被拒绝

齐成双
2023-03-14
问题内容

我正在尝试将Redis用作我的使用Docker
Compose的Django项目的Celery的代理。我无法弄清楚我到底做错了什么,但是尽管控制台日志消息告诉我Redis正在运行并接受连接(实际上,当我这样做时docker ps,我可以看到容器正在运行),但我仍然会收到有关拒绝连接的错误消息。我什至做到了

docker exec -it <redis_container_name> redis-cli
ping

看到回应是PONG

这是my中的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"

这是my中的Redis容器设置docker-compose.yml

redis:
    image: redis
    ports:
        - "6379:6379"

我还记得将redis容器与我的web容器链接起来。我可以正常启动服务器,但是在尝试将任何内容上传到站点时出现连接拒绝错误。到底出了什么问题?

编辑
:我记得用VBoxManage端口转发,这样我可以去我的浏览器和访问我的网站的localhost:8000,所以它似乎并不像我需要使用虚拟机的IP,而不是localhost我的settings.py

编辑2 :如果localhostdocker- machine虚拟机的IP地址或Redis容器的IP地址替换设置,那么发生的事情是,当我上传文件时,我真的很快在网站上收到错误的成功消息,但是实际上没有任何内容上传。基础上载功能insertIntoDatabase()使用delay


问题答案:

Django是否在与Redis容器链接的单独容器中运行?如果是这样,您应该具有一些环境变量,以及Django用于连接到Redis容器的Ip和端口。将BROKER_URL设置为使用redis
Ip和port env vars,您就应该做生意。同上RESULT_BACKEND。

用于环境变量的参考文档在这里:Docker Compose文档

以下是一些示例代码,说明了我们如何在OfferUp的一个项目中使用自动添加的env var:

BROKER_TRANSPORT = "redis"
_REDIS_LOCATION = 'redis://{}:{}'.format(os.environ.get("REDIS_PORT_6379_TCP_ADDR"), os.environ.get("REDIS_PORT_6379_TCP_PORT"))
BROKER_URL = _REDIS_LOCATION + "/0"
CELERY_RESULT_BACKEND = _REDIS_LOCATION + "/1"


 类似资料:
  • 问题内容: 我正在尝试通过代码访问Redis服务器,但未连接。但是,如果我猛击redis容器,我可以访问redis-cli。 docker-compose.yml看起来像这样 Dockerfile_redis 当我尝试使用此代码连接到Redis服务器时 它发出此警告 有谁知道如何将Redis容器连接到PHP容器? 问题答案: 你的问题 Docker Compose 为不同的服务创建了单独的dock

  • 问题内容: 当我发表评论时,不要保存,崩溃(错误:[Errno 111]连接被拒绝),为什么? views.py models.py 管理员 问题答案: 为了进行调试,你可以使用以下命令设置本地smtpserver: 并相应地调整你的邮件设置:

  • 我试图构建多个服务,并用Nginx反向代理它们。 所以service1是: http://api/service1(nginx)=>docker(http://service1:4001/)=>express(http://localhost:4000) 这是我第一次从头开始尝试nginx,我被困住了,我无法从http://localhost:80/service1或http://api/serv

  • 我在nginx(http://52.xx.xx.xx/)上访问我的IP时遇到了502个网关错误,日志简单地说: 2015/09/18 13:03:37[错误]32636#0:*1连接()失败(111:拒绝连接),连接到上游,客户端:xx.xx.xx.xx,服务器:xx.xx.xx.xx,请求:“Get/HTTP/1.1”,上游:“UWSGI://127.0.0.1:8000”,主机:“xx.xx.

  • 问题内容: 我有一台运行Ubuntu 12.04 LTS和MongoDB实例(服务正在运行并且可以在本地连接)的Linode服务器,我无法从外部来源连接到该服务器。 我已经将这两个规则添加到我的IP表中,其中 是我要连接FROM的服务器(如本 MongoDB参考中所述): 而且我在IP表中看到了一条规则,该规则允许27017与 之间的连接,但是当我尝试使用以下命令从 连接到我的mongo数据库时: