91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

利用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

海门市| 镇坪县| 凌海市| 出国| 太原市| 伽师县| 赤城县| 西畴县| 柳江县| 土默特右旗| 兴隆县| 东源县| 阿拉善左旗| 康马县| 彭泽县| 阿克陶县| 慈溪市| 和田市| 武陟县| 新丰县| 湄潭县| 泾川县| 安康市| 丹东市| 昌图县| 长治县| 苗栗县| 扎兰屯市| 无为县| 莒南县| 嘉祥县| 克东县| 专栏| 五家渠市| 波密县| 汝城县| 民和| 丹阳市| 安义县| 曲麻莱县| 遂宁市|