使用调度器apscheduler实现py文件不停连接MySQL数据库

背景说明:

使用内网负载均衡添加后端主机,该主机安装有nginx,其配置文件代理内网的MySQL数据库地址 (数据库是主备形式的,重启的话会都重启)

需要测试两个目标:
(采用不停往MySQL里写数据,并记录时间)

  1. 重启nginx,程序是否会断开MySQL连接,影响数据写入
  2. 当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开始连上,主备都重启的耗时时间。



posted @ 2022-03-24 16:48  哈喽哈喽111111  阅读(395)  评论(0编辑  收藏  举报