【问题标题】:redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested addressredis.exceptions.ConnectionError:连接到 localhost:6379 时出现错误 99。无法分配请求的地址
【发布时间】:2021-09-19 21:57:00
【问题描述】:

在尝试从一个容器到另一个容器运行 redis 命令时出现连接错误的任何想法? 我正在尝试在本地运行旧的 python 2.7 lambda,以便在升级到 3.8.10 之前进行测试 我正在运行一个构建 redisdb 容器并将其与 my_app 容器链接的脚本:

docker build . -t my_app:latest
docker pull redis:3.2.4-alpine && \
docker run --name=redisdb -d  redis:3.2.4-alpine redis-server
docker run \
    --rm -t -i -d \
    --link redisdb:redis \
    -h redis -p 6379 \
    -e CONFIG_FILE=local_config.yaml \
    my_app

我正在使用以下命令在 my_app 上运行 python 脚本:

r = redis.Redis()
r.mset({"Bahamas": "Nassau"})
print(r.get("Bahamas"))

我也在这里尝试了最重要的建议:Error 99 connecting to localhost:6379. Cannot assign requested address 并通过了r = redis.Redis(host='localhost', port=6379, decode_responses=True),结果相同。

每次我尝试在 my_app 容器中运行该 python 脚本时,我都会得到:

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

当我运行容器然后检查 docker ps 我得到这个:

$ docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED              STATUS              PORTS                     NAMES
76aea9308821   mar-atlas-readings-processor   "python2"                About a minute ago   Up About a minute   0.0.0.0:64098->6379/tcp   mar-atlas-readings-processor
f313113341de   redis:3.2.4-alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                  redisdb

这显示了正确的端口连接。

【问题讨论】:

  • 首先检查你的容器是否正在运行? sudo docker ps

标签: python docker redis


【解决方案1】:

您的 python 应用程序正在尝试与本地主机上的 Redis 通信,但 Redis 容器位于不同的本地主机上。

您应该能够将docker run ... 命令中配置的链接(即redisdb)用于host 选项。

【讨论】:

  • 哇,解决了。谢谢你好心的陌生人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 2017-01-20
  • 2014-09-30
  • 2020-03-13
  • 2011-03-12
  • 2015-09-08
相关资源
最近更新 更多