問題1: 在 mac 系統(tǒng)下魄缚,編寫的 python 程序沾凄,用到了subscribe 功能,單機(jī)情況下是正常的鳄抒,但是訪問遠(yuǎn)程redis 服務(wù)器闯捎,會出現(xiàn)過半小時到1小時,subscribe 功能就收不到消息的情況许溅。
原因主要是redis用到的socket 的keepalive 功能沒有配置好
mac 系統(tǒng)下可如下寫
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 系統(tǒng)下瓤鼻,以上還不行,還需要加入一個設(shè)置
if hasattr(socket,"TCP_KEEPIDLE"):
idle = getattr(socket,"TCP_KEEPIDLE")
option[idle] = 60
print("socket has TCP_KEEPIDLE")
因?yàn)?在 Mac 下贤重,沒有TCP_KEEPIDLE 這個配置茬祷,在 linux 下有
以上如果還不行,那可能還要改下 redis.conf的配置
目前掛了一晚上游桩,還是正常的