pymysql 解决pymysql自动断开 定时检查数据库连接状态

2023-11-02

在框架中使用Mysql 数据库存在一个问题,即连接八小时之内没有执行命令则自动断开,最简单的解决方法是重启服务。

暴力解决

重启服务这显然是不友好的,还有一种方法是设置等待时间,如设置:

interactive_timeout = 360000
wait_timeout = 360000

如上设置能保证服务十天不断开,但如果用户超过十天没使用该服务则又需要重启,该方法治标不治本。

sql查询解决

另外一种方法是在每次sql查询之前都判断连接是否正常,如果不正常则重新连接。步骤如下:

connection = Connect(
		host="xxxx", 
		port=3306,
		user="root",
		password="root",
		db="test",
		charset="utf8"
	)

....

def select():
	connection.ping(reconnect=True)
	cur.execute(sql)
	db.commit()

定时任务解决

上面的方法显然是可以解决问题的,但如果查询过多,每次都检查状态总感觉有点不合适,而服务默认八小时不运作则关闭,我们是否可以每隔八小时获取一次连接,如果可以获取到则保持,不能获取到则重新获取,如下演示:

此处使用fastAPI框架进行演示,首先设置定时任务,此处的connection即为数据库的连接:

# 定时任务
from apscheduler.schedulers.asyncio import AsyncIOScheduler

def job(connection):
	t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
	print("{} 触发了定时任务!".format(t))
	connection.ping(reconnect=True)


def scheduler_task():
	scheduler = AsyncIOScheduler()
	scheduler.add_job(job, 'interval', hours=8, args=[connection])
	scheduler.start()

之后在路由处配置即可:

# 定时任务
@app01.on_event('startup')
async def init_scheduler():
	scheduler_task()

更详细的可参考:
fastApI 定时任务apscheduler
Python 定时调度
pymysql定时检查数据库连接状态

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pymysql 解决pymysql自动断开 定时检查数据库连接状态 的相关文章

随机推荐

  • C++学习(四九四)cmake从list从删除文件

    生成文件列表 file GLOB RECURSE lib srcs c 输出文件列表 注意lib srcs的写法 需要 MESSAGE STATUS lib srcs 从文件列表中删除文件 注意lib srcs的写法 不需要 注意文件路径
  • 【pyq文案】合理但有病の自拍文案

    1 丑一眼 2 强子 妈发自拍了 3 真是方向失了南北 美的有点东西 4 妈的看自己就烦 800块出了 完美无瑕 5 拍了拍自己 6 这张脸 全是这双手给的 7 糟糕 没有酷起来 8 制造美女我比女娲还牛 9 注意看 无论从正面还是侧面 这
  • 如何在vscode中显示markdow大纲

    你可以在 Visual Studio Code 中使用 Markdown All in One 扩展来显示 Markdown 大纲 首先 你需要在 Visual Studio Code 中安装 Markdown All in One 扩展
  • 现代操作系统 第七章

    虚拟化和云 虚拟化的主要思想是虚拟化监控程序 virtual Machine Monitor VMM 在同一物理硬件上创建出有多台虚拟机器的假象 VMM又称作虚拟机管理程序 hypervisor 这种方法的好处是一台虚拟机的故障不会影响其他
  • 【IDEA使用教程】利用教育邮箱免费激活Jetbrains系列产品

    如果是学生并且你们学校给你们注册了edu后缀的教育邮箱 那么恭喜你 可以免费激活并使用idea等软件了 1 进入网站JetBrains 学习产品https www jetbrains com shop eform students 2 填写
  • Java IO技术

    Java IO技术 java io包为我们提供了IO相关的API 实现了对所有外部系统的输入输出操作 数据源 数据源data source 提供数据的原始媒介 常见的数据源有 数据库 文件 其他程序 内存 网络连接 IO设备 数据源分为 源
  • MIB基本概念

    MIB的概念 MIB的定义 MIB中的OID OID的表示方式 SMI 对象数据类型 MIB 2中的文本规定 MIB和SMI关系 MIB编写示例 more 一 MIB的概念 MIB全称Management Information Base
  • 【详解如何一步步实现三子棋】

    相信大家都玩过五子棋 三子棋也是一样的道理 行列三子 对角线三子获得胜利 想要实现三子棋小游戏需要哪几步 1 三子棋首先我们要创建棋盘 创建一个二维数组三行三列 然后将棋盘初始化为全空格 2 如何将棋盘转换为网格状棋盘 如下图 3 玩家下棋
  • e-charts 图例过多问题

    饼图的图例 如果过多 需要增加 分页按钮 注意 如果测试用例数量不够 则分页按钮不会出现 会默认将画面填满后 分页按钮才会出现 我之前只用了两三个 总是不出现 气死了 legend top 15 type scroll orient ver
  • nginx代理获取ip为127.0.0.1解决方法

    原因 我们访问互联网上的服务时 大多数时 客户端并不是直接访问到服务端的 而是客户端首先请求到反向代理 反向代理再转发到服务端实现服务访问 通过反向代理实现路由 负载均衡等策略 这样在服务端拿到的客户端IP将是反向代理IP 而不是真实客户端
  • LeetCode:用栈实现队列(纯C语言)可CV

    题目链接 232 用栈实现队列 力扣 Leetcode 还是老套路二话不说 先上代码 typedef char STDataType typedef struct Stack STDataType a int top int capacit
  • Android开发——V1及V2签名原理简析

    Android为了保证系统及应用的安全性 在安装APK的时候需要校验包的完整性 同时 对于覆盖安装的场景还要校验新旧是否匹配 这两者都是通过Android签名机制来进行保证的 本文就简单看下Android的签名与校验原理 分一下几个部分分析
  • 指路明灯,99%自动化测试从业者都该看的职业规划!

    这篇文章将从以下三个方面来给大家介绍自动化测试 其中包含自动化测试从业者需要了解的知识和一些常见的思想误区 以及自动化测试行业的前景以及如何进阶 1 自动化测试的介绍 自动化测试什么是 有哪些被称作自动化测试 自动化测试意义何在 和所有的项
  • React + Ant Design Pro项目实现keep-alive页签

    背景 PC端管理系统 采用 ant design pro 方案 它是阿里的一个管理系统框架 技术栈是react 相比vue react一个先天不足是不支持 keep alive 所以管理系统中的多页签功能难以实现 调研 由于官方不支持 只能
  • Tomcat环境变量Catalina_Home配置

    1 CATALINA HOME是TOMCAT安装路径的别名 目的是为了方便使用TOMCAT 2 计算机 gt 属性 gt 环境变量 新建环境变量 变量名为CATALINA HOME 变量值tomcat的解压目录 我电脑上的为 D apach
  • r语言barplot函数图中加标签_R语言中使用text()函数给绘图添加文字

    R语言中text 函数同abline 函数 lines 函数一样属于低水平函数 即在已有绘图中添加相关图形 text 函数的作用是在给定的x和y坐标的位置添加字符串 text 函数的默认使用格式如下 text x y NULL labels
  • HTML5 FormData 方法介绍以及实现文件上传

    XMLHttpRequest 是一个浏览器接口 通过它 我们可以使得 Javascript 进行 HTTP S 通信 XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式 2008年 2 月 XMLHttpReque
  • 数据和技术驱动下的投放效率优化

    业内流行着这样一句话 用户增长三板斧 投放 push和分享 渠道投放是用户增长非常重要的一个方向 以往渠道投放更多是重商务 渠道和运营 现在已经发展成了一个通过数据和技术驱动不断优化 精益求精的领域 技术在投放 营销场景正扮演着越来越关键的
  • HTML基础标签 && CSS选择器 && JavaScript基础语法 && WebAPI_ && 页面设计 && HTTP协议

    第 1 题 简答题 题目名称 编写博客 总结 HTML 中的常用标签用法 题目内容 编写博客 总结 HTML 中的常用标签用法 第 2 题 简答题 题目名称 image 标签的 alt 和 title 属性有什么区别 题目内容 image
  • pymysql 解决pymysql自动断开 定时检查数据库连接状态

    在框架中使用Mysql 数据库存在一个问题 即连接八小时之内没有执行命令则自动断开 最简单的解决方法是重启服务 暴力解决 重启服务这显然是不友好的 还有一种方法是设置等待时间 如设置 interactive timeout 360000 w