我使用一层薄薄的python连接到Mongo数据库。我从C++调用Python,这很好。你知道吗
S+C++ & Gt;Python & Gt;Mongo,并返回到Python & C++;
我用的是Pymango,我用的是Windows7。你知道吗
我想知道Mongo数据库是否已经启动并运行,所以我在Python中做了这样的事情:(请不要担心奇怪的返回变量)
client = MongoClient('localhost', 27017, serverSelectionTimeoutMS = 20)
ret=[]
try:
client.server_info()
ret.append("up")
client.close()
except Exception as e:
ret.append("down")
return ret
但是,当服务器启动时,总是会产生一个进程(进程“hacker”->;network),等待它超时,不是20毫秒之后,而是30秒之后。当我检查数据库是否正常运行时,经常会有数百个进程/连接正在等待。你知道吗
是我做错了什么,还是Pymango在Windows上工作不太好?你知道吗
谢谢!你知道吗
我绕过了它,因为它似乎没有真正解决这个问题,而且这个问题可能/将导致奇怪的问题,我想我会分享我的解决方法:
1:建立并使用全局连接,不要连接并关闭,而是重用。你知道吗
在检查数据库是否启动时,首先检查是否存在全局连接
2:如果是的话,就用吧。如果它已经被删除(这应该“永远”不会发生,只有当说重新启动您的服务器或硬件故障),那么超时时间将很长。你知道吗
3:如果它不存在,请将我的代码与serverSelectionTimeoutMS=20一起使用,这样不会产生另一个等待的线程/进程,而且速度很快。你知道吗
相关问题 更多 >
编程相关推荐