gpt4 book ai didi

python - 使用 pyMongo 获取 mongodb 中的复制延迟

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:08 24 4
gpt4 key购买 nike

我正在尝试使用 db.rs.printSlaveReplicationInfo 从 python 和 pymongo 获取复制延迟,但没有找到任何正确的方法。我尝试了以下方法,但没有帮助。

>>>from pymongo import MongoClient
>>>client = MongoClient()
>>>db = client.test_database
>>>db.rs.printSlaveReplicationInfo
Collection(Database(MongoClient([u'10.0.0.19:10006', u'10.0.0.68:10002']), u'xyz'), u'rs.printSlaveReplicationInfo')
db.rs.printSlaveReplicationInfo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib64/python2.7/site-packages/pymongo/collection.py", line 2413, in __call__
self.__name.split(".")[-1])
TypeError: 'Collection' object is not callable. If you meant to call the 'printSlaveReplicationInfo' method on a 'Collection' object it is failing because no such method exists.
>>> db.rs
Collection(Database(MongoClient([u'10.0.0.19:10006', u'10.0.0.68:10002']), u'xyz'), u'rs')

谁能帮忙解决这个问题吗?或者如何做?

提前致谢。

最佳答案

我找到了答案。这是完整的代码:

(注意:您需要具有管理员权限才能运行此命令。)

uri = "mongodb://usernamen:password@host:port/admin"
conn = pymongo.MongoClient(uri)
db = conn['admin']
db_stats = db.command({'replSetGetStatus' :1})


primary_optime = 0
secondary_optime = 0

for key in db_stats['members'] :
if key['stateStr'] == 'SECONDARY' :
secondary_optime = key['optimeDate']
if key['stateStr'] == 'PRIMARY' :
primary_optime =key['optimeDate']

print 'primary_optime : ' + str(primary_optime)
print 'secondary_optime : ' + str(secondary_optime)

seconds_lag = (primary_optime - secondary_optime ).total_seconds()
#total_seconds() userd to get the lag in seconds rather than datetime object
print 'secondary_lag : ' + str(seconds_lag)

optime代表该mongo节点有数据的日期。

您可以在这里阅读更多相关信息:

https://docs.mongodb.com/manual/reference/command/replSetGetStatus/

关于python - 使用 pyMongo 获取 mongodb 中的复制延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47630881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com