Izhuceul 发表于 2018-10-25 11:14:03

利用python测试mongodb副本集数据同步延迟

#!/usr/bin/python  
# -*- coding: utf-8 -*-
  
import pymongo
  
from pymongo import MongoClient
  
from pymongo import ReadPreference
  
import time
  
import argparse
  
# 定义执行时长装饰器函数
  

  

  
def warps(*args):
  
    def deco(func):
  
      def _deco(*args, **kwargs):
  
            # 记录开始时间
  
            start = time.clock()
  
            # 回调原函数
  
            func(*args, **kwargs)
  
            # 记录结束时间
  
            end = time.clock()
  
            # 计算执行时长
  
            delat = end - start
  
            # 转换成ms输出
  
            print("delay:%sms" % (int(delat*1000)))
  
      return _deco
  
    return deco
  

  
# 连接副本集
  
conn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017'])
  
# 读写分离
  
db = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED)
  
# 定义连接的集合
  
collection = db.student
  
# 创建插入数据函数
  

  

  
def data_insert(num):
  
    try:
  
      for i in range(1, num):
  
            collection.insert({"name": "student"+str(i), "age": (i % 100), "city": "FuZhou"})
  
    except Exception as e:
  
      print("insert data:", e)
  
# 创建查询数据函数,引用装饰器函数
  

  

  
@warps()
  
def data_select(num):
  
    try:
  
      count = collection.find().count()
  
      while count != num - 1:
  
            count = collection.find().count()
  
    except Exception as e:
  
      print("select data:", e)
  
# 创建删除数据函数
  

  

  
def data_delete():
  
    try:
  
      collection.remove({})
  
    except Exception as e:
  
      print("delete data:", e)
  
# 创建计算延迟时长函数
  

  

  
def data_delay(num):
  
    data_insert(num)
  
    data_select(num)
  

  
if __name__ == '__main__':
  
    # 定义脚本需要传入插入的数据量,默认值为1000,通过-n传入参数
  
    parser = argparse.ArgumentParser(description='insert data to mongodb number')
  
    parser.add_argument('-n', action='store', dest='num', type=int, required=False, default=1000)
  
    given_args = parser.parse_args()
  
    num = given_args.num
  
    data_delete()
  
    data_delay(num)


页: [1]
查看完整版本: 利用python测试mongodb副本集数据同步延迟