亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python測試mongodb副本集數據同步延遲

發布時間:2020-07-25 05:53:46 來源:網絡 閱讀:4179 作者:hnr1017 欄目:MongoDB數據庫

本文主要介紹python如何連接mongodb副本集及讀寫分離配置,mongodb副本集數據同步延遲測試。


一、python連接mongodb副本集

1.連接副本集

在新版的驅動中直接使用MongoClient連接

如下:

from pymongo import MongoClient
conn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017'])

2.讀寫分離配置

from pymongo import ReadPreference
db = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED)

副本集ReadPreference5個選項:

PRIMARY:默認選項,從primary節點讀取數據

PRIMARY_PREFERRED:優先從primary節點讀取,如果沒有primary節點,則從集群中可用的secondary節點讀取

SECONDARY:從secondary節點讀取數據

SECONDARY_PREFERRED:優先從secondary節點讀取,如果沒有可用的secondary節點,則從primary節點讀取

NEAREST:從集群中可用的節點讀取數據

 

二、測試mongodb延遲腳本

1.原理

往集群中插入一批數據,然后從secondary節點讀取,直到讀到數據總數與插入的總數相等。

2.腳本內容

#!/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)
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明溪县| 武威市| 富宁县| 宁阳县| 施甸县| 黄冈市| 荥阳市| 江口县| 庆云县| 石河子市| 高安市| 抚宁县| 息烽县| 宜兴市| 大理市| 湖口县| 灵寿县| 大新县| 水城县| 灵武市| 静海县| 漠河县| 潮安县| 蓬安县| 自治县| 天津市| 合水县| 武清区| 布尔津县| 左云县| 永昌县| 东城区| 江安县| 子洲县| 青神县| 中宁县| 肥城市| 巴东县| 榆社县| 泸西县| 平谷区|