Peewee+Postgresql+PooledPostgresqlDatabase重连机制
需求:
Postgresql数据库服务重启后,需要业务代码正常读写数据库
方案:
- 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类
- 修改reconnect_errors属性来适配Postgresql的错误类型
- 使用ReconnectPooledPostgresqlDatabase来获取数据库连接
测试
- 启动程序 -->重起数据库服务–>读写数据库操作正常
- 启动应用程序–>关闭数据库服务–>读写数据库失败–>启动数据库服务–>读写数据库操作正常
示例:
from playhouse.pool import PooledPostgresqlDatabase
from peewee import OperationalError, InterfaceError
from playhouse.shortcuts import ReconnectMixinclass ReconnectPooledPostgresqlDatabase(ReconnectMixin, PooledPostgresqlDatabase):"""支持重连机制的数据库连接池类,可以通过扩展reconnect_errors来支持重连场景"""reconnect_errors = (# Postgres error examples:(OperationalError, 'terminat'),(InterfaceError, 'connection already closed'))class PostgresqlManager(object):"""PG数据库管理类"""__instance_lock = threading.Lock()__database = None@classmethoddef get_database(cls, **kwargs):if cls.__database is None:with cls.__instance_lock:cls.__database = PooledPostgresqlDatabase(database=kwargs.get("database"),host=kwargs.get("host", "127.0.0.1"),port=int(kwargs.get("port", 5432)),user=kwargs.get("user", "postgres"),password=kwargs.get("password", "postgres"),max_connections=int(kwargs.get("max_connections", 50)),stale_timeout=int(kwargs.get("stale_timeout", 600)))return cls.__database
相关文章:
Peewee+Postgresql+PooledPostgresqlDatabase重连机制
需求: Postgresql数据库服务重启后,需要业务代码正常读写数据库 方案: 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类修改reconnect_errors属性来…...

IIS 反向代理模块: URL Rewrite 和 Application Request Routing (ARR)
需要设置iis反向代理的场景其实挺多的。例如websocket、Server Sent Events(SSE) 都需要反向代理。 对于需要临时放公网访问的应用,直接运行127.0.0.1的开发环境,然后通过反向代理访问127.0.0.1就可以了,省去麻烦的iis设置。 IIS 实现反向代…...
企业在选择CRM系统时需要注意哪些问题呼叫系统外呼系统部署搭建
在这个信息技术快速发展的时代,许多企业为了对客户进行有效的管理对CRM系统进行了实施。那么,有人会问了,企业在选择CRM系统是需要注意哪些问题呢?我们一起来看看 业务需求匹配:系统功能是否与企业当前及未来的需求相符ÿ…...
数据库水平分表方案
数据库分表有很多策略,如下: 数据库分表是处理大型数据库中数据量过大的一种常见策略,它可以提高查询性能、减少锁竞争、降低维护成本等。以下是一些常见的数据库分表方案: 1. **垂直分表(Vertical Partitioning&…...

MySQL表操作及约束
修改表 重命名: mysql> alter table user1 rename to user; 新增一列 mysql> alter table user add image_path varchar(128) comment 路径 after birthday; mysql> alter table user add image_path varchar(128) comment 路径 after birthday; Query…...

Redis 键值对操作全攻略
文章目录 一 . get 和 set二 . keys *三 . exists四 . del五 . expire六 . ttl七 . Redis 的 key 的过期策略八 . 定时器的实现8.1 基于优先级队列8.2 基于时间轮实现的定时器 九 . type十 . 数据库管理相关命令 Hello , 大家好 , 这个专栏给大家带来的是 Redis 系列 ! 本篇文章…...
【C语言】---- return的作用
return 是C语言中的一个关键字,用于从函数中返回值。它有以下几个作用: 1 返回值 return 用于将函数的结果返回给调用者。在函数执行过程中,当遇到 return 语句时,函数将立即停止执行,并将其后的表达式的值作为函数的…...

如何制作新生资料收集系统?
新学年伊始,学校需要高效收集学生信息和证件照。易查分提供了一个便捷的解决方案,通过创建一个集成信息和图片的收集系统,可以快速完成这项工作,并将信息导出为PDF,方便打印和存档。 制作步骤如下: 1. 准备…...
pyecharts可视化数据大屏
1. 简介 1.1. 概述 PyECharts 是一个用于生成 ECharts 图表的 Python 库。ECharts 是一款由阿里巴巴开发的开源 JavaScript 图表库,广泛应用于网页端的数据可视化。而 PyECharts 将 ECharts 的功能带到了 Python 环境中,使得 Python 开发者可以方便地在数据分析、机器学习等…...
uniapp - H5 在 UC 浏览器中返回上一页失效的解决方案
1. 前言 最近使用 uniapp 开发的 H5 在测试中遇到的问题:有A、B两个页面,反复从A页面进入B页面后,在B页面会存在返回函数失效问题。经过测试发现,如果反复进入B页面的参数相同,在第三次进入后,返回就会失效,不管是 uniapp 自带的头部导航,还是 uni.navigateBack API 都…...

利用KMeans重新计算自己数据集的anchor
在YOLOv5或YOLOv7中,anchors(锚框)是预设的一组不同大小、不同长宽比的边界框,它们用于在图像中的每个网格单元上进行偏移和缩放,以生成目标的候选框。这些anchors的设定对于提高目标检测的效率和准确性至关重要。 并…...

分类任务实现模型集成代码模版
分类任务实现模型(投票式)集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客,自定义投票式集成,手动实现模型集成(投票法)的代码。最后通过tensorboard进行可视化࿰…...
从Milvus迁移DashVector
本文档演示如何从Milvus将Collection数据全量导出,并适配迁移至DashVector。方案的主要流程包括: 首先,升级Milvus版本,目前Milvus只有在最新版本(v.2.3.x)中支持全量导出其次,将Milvus Collection的Schema信息和数据…...

彻底改变计算机视觉的 Vision Transformer (ViT) 综合指南(视觉转换器终极指南)
欢迎来到雲闪世界。大家好!对于那些还不认识我的人,我叫 Francois,我是 Meta 的研究科学家。我热衷于解释先进的 AI 概念并使其更容易理解。 今天,让我们深入探讨计算机视觉领域最重要的贡献之一:Vision Transformer&…...

vue3 v-bind=“$attrs“ 的一些理解,透传 Attributes相关说明及事例说明
1、可能小伙伴们经常会在自己的项目中看到v-bind"$attrs",这个一般是在自定义组件中看到。 比如: <template><BasicModalv-bind"$attrs"register"registerModal":title"getTitle"ok"handleSubm…...

鸿蒙开发基础知识-页面布局【第四篇】
1.类型转换 2.交互点击事件 3.状态管理 4.forEch渲染和右上角图标 测试案例 Stack 层叠布局一个生肖卡 5. 动画展示图片 6. Swiper 轮播组件的基本使用 图片等比显示 aspectRatio()...
用CSS实现前端响应式布局
一、响应式布局的重要性 随着移动设备的普及,越来越多的用户通过手机、平板电脑等设备访问网页。如果网页不能适应不同的屏幕尺寸,就会出现布局混乱、内容显示不全等问题,严重影响用户体验。响应式布局可以确保网页在各种设备上都能保持美观…...
【docker】docker启动sqlserver
sqlserver-docker官方地址 # sqlserver不是从docker的中央仓库拉取的,而是从ms的仓库拉取的。 docker pull mcr.microsoft.com/mssql/server:2019-latest# 宿主机即docker程序运行的linux服务器 docker run -d \ --user root \ --name mssql2019 \ -e "ACCEPT…...

Python爬虫01
requests模块 文档 安装 pip/pip3 install requestsresponse.text 和 response.content的区别 1.response.text 等价于 response.content.decode("推测出的编码字符集")response.text 类型:str 编码类型:requests模块自动根据Http头部对…...

关于vue项目启动报错Error: error:0308010C:digital envelope routines::unsupported
周五啦,总结一下这周遇到的个别问题吧,就是关于启动项目的时候其他的东西都准备好了,执行命令后报错Error: error:0308010C:digital envelope routines::unsupported 这里看一下我标注的地方,然后总结一下就不难发现问题所在 查看…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...

高效的后台管理系统——可进行二次开发
随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...

高保真组件库:开关
一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护
摘要 本文以健康管理应用为例,展示鸿蒙系统如何通过细粒度权限控制、动态权限授予、数据隔离和加密存储四大核心机制,实现复杂场景下的用户隐私保护。我们将通过完整的权限请求流程和敏感数据处理代码,演示鸿蒙系统如何平衡功能需求与隐私安…...