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的配置

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 5/15/2017 7:06:35 PM 纵观各大组件,配置文件占据极其重要的地位。可配置化也是当下开发的一流行趋...
    爱做梦的胖子阅读 9,873评论 0 8
  • Redis 配置文件示例 注意:想要读取配置文件,Redis的第一个参数必须是文件的路径 ./redis-serv...
    起个名忒难阅读 5,017评论 0 1
  • # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1...
    iyimao阅读 4,272评论 0 2
  • 七年前,我19岁,你46岁,七年前的今天,你永远的离开了我。 这七年,上大学,毕业,考研,工作,跳槽,谈恋爱……任...
    北小男阅读 3,669评论 0 1
  • 你遇见过这样的怪物吗?高兴时它神采飞扬,宛如灵动的音符,跳跃、自由、无畏,或微笑,或舞蹈,或歌唱;伤心时它悲痛欲绝...
    非言非妍阅读 2,929评论 0 0

友情链接更多精彩内容