为什么pymongo产卵(如此多)等待连接?

时间:2016-11-30 16:26:35

标签: python mongodb networking pymongo

我使用一层薄薄的python连接到Mongo数据库。我用C ++调用python,这很好。

所以C ++ - > Python - > Mongo和回到Python - > C ++

我在Windows 7上使用PyMongo和我。

我想知道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

但是,当服务器处于启动状态时,不变会产生一个进程(进程'黑客' - >网络),等待它超时,而不是在20毫秒后,但似乎是30秒。当我检查数据库是否已启动时,我经常会有数百个坐着,等待,进程/连接。

我做错了什么或者PyMongo在Windows上运行得不好?

谢谢!

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,因为它似乎没有真正解决这个问题,而且问题可能会/会引起奇怪的问题,我以为我会分享我的修复:

1:制作并使用全局连接,不要连接和关闭,重新使用。

在检查数据库是否启用时,首先检查是否存在全局连接

2:如果是这样,请使用它。如果它已被删除(应该"永远不会发生,只有当重新启动服务器或硬件故障时),那么超时将会很长。

3:如果它不存在,请使用我的代码与serverSelectionTimeoutMS = 20,它不会产生另一个等待的线程/进程并且也很快。