Python3 用pyredis subscribe 收不到消息的问题

问题1: 在 mac 系统下,编写的 python 程序,用到了subscribe 功能,单机情况下是正常的,但是访问远程redis 服务器,会出现过半小时到1小时,subscribe 功能就收不到消息的情况。

原因主要是redis用到的socket 的keepalive 功能没有配置好
mac 系统下可如下写
python 代码


option = {
socket.SO_KEEPALIVE: 60,
socket.TCP_KEEPCNT: 10
}
db_bridge =redis.Redis(host="xxxx.xxx.xx.x",port=6379,password="password",db=10,
socket_keepalive=True,
socket_keepalive_options=option,
socket_connect_timeout=999999)


问题2:centos 系统下,以上还不行,还需要加入一个设置


if hasattr(socket,"TCP_KEEPIDLE"):
idle = getattr(socket,"TCP_KEEPIDLE")
option[idle] = 60
print("socket has TCP_KEEPIDLE")


因为 在 Mac 下,没有TCP_KEEPIDLE 这个配置,在 linux 下有

以上如果还不行,那可能还要改下 redis.conf的配置

目前挂了一晚上,还是正常的

你可能感兴趣的:(Python3 用pyredis subscribe 收不到消息的问题)