python mongodb集群读写测试

# !/usr/bin/python
# -*- coding: utf-8 -*-
import pymongo
from pymongo import MongoClient
from pymongo import ReadPreference
import time
import argparse

# 连接副本集
conn = MongoClient(['47.103.118.3:27017'])
conn1= MongoClient(['211.148.19.20:27017'])
# 读写分离
db = conn.get_database('test', read_preference=ReadPreference.SECONDARY_PREFERRED)
db1 = conn1.get_database('test', read_preference=ReadPreference.SECONDARY_PREFERRED)
# 定义连接的集合
collection_insert = db.mongod4
collection_select = db1.mongod4

# 创建查询数据函数,引用装饰器函数
class insert:
    # 定义执行时长装饰器函数
    def warps_insert(*args):
        def deco(func):
            def _deco(*args, **kwargs):
                # 记录开始时间
                start = time.clock()
                # 回调原函数
                func(*args, **kwargs)

                # 记录结束时间
                end_sel = time.clock()
                # 计算执行时长
                delat = end_sel - start
                # 转换成ms输出
                print("insert_delay:%ss" % (int(delat * 1000)))

            return _deco

        return deco
    @warps_insert()
    # 创建插入数据函数
    def data_insert(num):
        try:
            for i in range(1, num):
                collection_insert.insert({"name": "student" + str(i), "age": (i % 100), "city": "FuZhou"})
        except Exception as e:
            print("insert data:", e)

class select:
    # 定义执行时长装饰器函数
    def warps_select(*args):
        def deco(func):
            def _deco(*args, **kwargs):
                # 记录开始时间
                start = time.clock()
                # 回调原函数
                func(*args, **kwargs)
                # 记录插入时间

                # 记录结束时间
                end_sel = time.clock()
                # 计算执行时长
                delat = end_sel - start
                # 转换成ms输出
                print("select_delay:%sms" % (int(delat * 1000)))

            return _deco

        return deco
    @warps_select()
    # 创建查找数据函数
    def data_select(num):
        try:
            count = collection_select.find().count()
            while count != num - 1:
                count = collection_select.find().count()
        except Exception as e:
            print("select data:", e)

# insert=insert()
# select=select()
def data_delay(num):
    insert.data_insert(num)
    select.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_delay(num)

使用时需要考虑各个服务器之间访问的网络延迟,可以放在服务器本地运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值