使用调度器apscheduler实现py文件不停连接MySQL数据库
背景说明:
使用内网负载均衡添加后端主机,该主机安装有nginx,其配置文件代理内网的MySQL数据库地址 (数据库是主备形式的,重启的话会都重启)
需要测试两个目标:
(采用不停往MySQL里写数据,并记录时间)
- 重启nginx,程序是否会断开MySQL连接,影响数据写入
- 当MySQL重启时,记录MySQL重启耗时时间。
要求:
python 3.x 版本
安装模块有:
pymysql
faker
apscheduler
表test_a结构:
CREATE TABLE `test_a` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`var` varchar(255) DEFAULT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
程序内容:
import pymysql.cursors
import datetime, time
from faker import Faker
from apscheduler.schedulers.background import BackgroundScheduler
fake = Faker(locale='zh_CN')
conn_timeout = 1
scheduler = BackgroundScheduler()
def job1():
print('连接数据库中..')
conn = pymysql.connect(host='192.168.2.166', user='root', password='password',
database='park_cloud_db', port=3306, charset='utf8', connect_timeout=conn_timeout)
cursor = conn.cursor()
var = 1000
while var > 0:
var = var - 1
print("var的值是:", var) # 顺序
name = fake.name() # 造虚假人名
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 当前时间,精确到时分秒
sql = "INSERT INTO `test_a` (`name`, `var`, `create_time`) VALUES (%s, %s, %s)"
cursor.execute(sql, (name, var, current_time))
conn.commit()
print("等待1秒")
time.sleep(1)
cursor.close()
conn.close()
scheduler.add_job(job1, 'interval', seconds=1)
scheduler.start()
效果
1.测试目标1:重启nginx,程序是否会断开MySQL连接,影响数据写入
会断开,时间很短,只有一秒,然后就自动连接上了
2.测试目标2:当MySQL重启时,记录MySQL重启耗时时间。
从时间:16:37:56 开始连不上数据库,到时间16:38:15能连上一次后再连不上,又到时间16:38:26开始连上,主备都重启的耗时时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-03-24 Docker安装部署Rancher
2021-03-24 Jenkins解决Host key verification failed
2021-03-24 Centos 7 安装 Haproxy
2021-03-24 阿里云下配置keepalive,利用HAVIP实现HA
2021-03-24 keepalived 实现双机热备
2021-03-24 HAproxy + keepalived 实现双机热备
2021-03-24 Keepalived设置master故障恢复后不重新抢回VIP