解决 Python 下 redis 报错:ConnectionError: Error while reading from socket: (104, 'Connection reset by pe

本文解决了在使用Redis客户端时遇到的健康检查间隔配置缺失问题,指出在Redis 3.x版本后,health_check_interval成为可选参数。为避免连接异常,应在初始化Redis客户端时明确指定该参数。
部署运行你感兴趣的模型镜像

原因:是redis包的问题。health_check_interval在3.x后是可选项。
解决办法:初始化 redis 客户端时,添加上 health_check_interval 选项。

client = redis.Redis(..., health_check_interval=30)

参考:
https://github.com/andymccurdy/redis-py/issues/1186#issuecomment-522794165

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

当使用 Python 连接运行在 Docker 中的 Redis 时,出现错误 `(54, 'Connection reset by peer')`,通常表示连接在建立后被服务器端意外中断。该错误可能由以下原因导致: 1. **网络配置问题**:Docker 容器的网络配置未正确暴露 Redis 所需端口(如 6379),或宿主机与容器之间的网络通信存在问题。确保在运行 Redis 容器时使用 `-p` 参数正确映射了端口,例如: ```bash docker run --name redis-container -d -p 6379:6379 redis ``` 这样可以确保 Redis 的 6379 端口在容器和宿主机之间正确映射[^1]。 2. **Redis 服务未正常运行**:Redis 容器可能因配置错误或启动失败而没有正常运行。可以通过以下命令检查容器状态: ```bash docker ps ``` 如果 Redis 容器不在运行状态,则需要查看其日志以排查问题: ```bash docker logs redis-container ``` 3. **防火墙或安全组限制**:宿主机或云平台的防火墙规则可能阻止了 Redis 端口的访问。确保宿主机的防火墙允许外部连接到 Redis 端口(默认为 6379)。如果是云服务器,还需要检查安全组规则是否放行该端口。 4. **连接超时或空闲连接被中断**:如果连接在一段时间内没有活动,可能会被中间设备(如负载均衡器、防火墙)中断。可以在 Redis 配置文件中调整 `timeout` 参数,延长空闲连接的超时时间: ```conf timeout 0 ``` 这将禁用空闲连接超时功能,避免连接被意外中断。 5. **Python 客户端配置问题**:使用的 Redis 客户端库(如 `redis-py`)可能存在配置问题。确保在代码中正确指定了 Redis 服务器的地址和端口: ```python import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) print(r.ping()) # 测试连接 ``` 6. **Docker 容器资源限制**:如果 Redis 容器的资源(如内存)受到限制,可能导致其无法正常处理连接请求。可以通过调整 Docker 的资源限制参数(如 `--memory`)来解决此问题。 ###
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值