当前位置: 首页 > article >正文

python redis连接池sub/pub断开连接问题

单机redis服务器没有出现断开连接问题

 

云服务集群版本出现了

尝试解决

连接池设置探测活性

# -*- coding: utf-8 -*-
'''
该模块是对依赖环境的封装,包括redis等等
'''
from _imports import *

import redis
import platform

# import module
import settings


# redis
socket_keepalive_options = None
if platform.system().lower() == "linux":
    socket_keepalive_options = {socket.TCP_KEEPIDLE: 3,
                                socket.TCP_KEEPCNT: 2,
                                socket.TCP_KEEPINTVL:1}
    pass


redis_config = settings.redis_config
redis_connection_pool = redis.ConnectionPool(max_connections=64,
                                             host=redis_config['host'],
                                             port=redis_config['port'],
                                             db=redis_config['db'],
                                             password=redis_config['password'],
                                             socket_timeout=1,
                                             socket_connect_timeout=1,
                                             socket_keepalive=True, # enable keepalive
                                             socket_keepalive_options=socket_keepalive_options) #

redis_client = redis.StrictRedis(connection_pool=redis_connection_pool)
redis_client.ping()

其中参数解释如下

int fd = tcpSocket->socketDescriptor();
int keepAlive = 1;      //开启keepalive属性,缺省值:0(关闭)
int keepIdle = 5;       //如果在5秒内没有任何数据交互,则进行探测,缺省值:7200(s)
int keepInterval = 2;   //探测时发探测包的时间间隔为2秒,缺省值:75(s)
int keepCount = 2;      //探测重试的次数,全部超时则认定连接失效,缺省值:9(次)
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive));
setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, (void *)&keepIdle, sizeof(keepIdle));
setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
setsockopt(fd, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));
 


http://www.kler.cn/a/3872.html

相关文章:

  • 调试Hadoop源代码
  • SQL-leetcode—626. 换座位
  • 【分类】【损失函数】处理类别不平衡:CEFL 和 CEFL2 损失函数的实现与应用
  • Web小练习01
  • 计算机网络-数据链路层
  • 记录 idea 启动 tomcat 控制台输出乱码问题解决
  • SparkSql编程开发
  • Proteus8.15安装包下载及安装教程
  • 【Python】在python中使用MySQL
  • Postgresql实战:使用pg_basebackup或pg_start_backup方式搭建Postgresql主从流复制
  • 代码随想录【Day42】动态规划 | 背包问题、416. 分割等和子集
  • 人工智能交互系统界面设计(Tkinter界面设计)
  • docker本地私有仓库搭建
  • 数据分析学习项目:东京奥运会跳水评论分析
  • python玄阶斗技--tkinter库
  • ChatGPT原理解析
  • 广州蓝景分享—如何结合人工智能学习前端开发
  • 代码随想录算法训练营第四十一天| 343 整数拆分 96 不同的二叉搜索树
  • 铁威马NAS教程之利用docker快速搭建个人在线书库
  • 高规格国赛接棒AidLux AI应用竞赛,AidLux邀你来报名赢大奖!
  • 【百面成神】java web基础7问,你能坚持到第几问
  • java HashMap 源码分析(深度讲解)
  • 【Java版oj】day19汽水瓶、查找两个字符串a,b中的最长公共子串
  • 【MySQL】MySQL的介绍MySQL数据库及MySQL表的基本操作
  • 将一段数字转为字符串
  • HTB-Stocker