# !/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)
使用时需要考虑各个服务器之间访问的网络延迟,可以放在服务器本地运行。