【发布时间】:2016-03-18 13:21:54
【问题描述】:
当代码无法连接到 MongoD 实例时,我正在努力让 pymongo 出错。似乎无论我做什么,“pymongo.errors.ConnectionFailure”都不起作用。我已经在 localhost 和远程 mongoD 实例上尝试过这个。当我使用同一系统中的 mongoclient shell('mongo --host xx.xx.xx.xx')时,我得到了正确的“连接被拒绝”。其他例外情况正常,但不是“ConnectionFailure”。请注意,当我在 mongod 实例主机上运行 tshark 嗅探器时,我在关闭的端口上看到正确的 TCP RST 连接被拒绝。 Mongod 没有监听,但是 pymongo ConnectionFailure 无法捕获失败的连接。
python 版本:2.7.10 pymongo 版本:3.2
我可能会遗漏什么,或排除故障的步骤?在下面的示例中,mongod 未在 localhost 上运行。我也在远程主机上停止它。在这两种情况下,都没有捕获到异常错误,并且 pymongo 代码似乎认为它已连接。
代码:
import pymongo
try:
pymongo.MongoClient('localhost:27017')
except pymongo.errors.ConnectionFailure, e:
print "Could not connect: %s" % e
【问题讨论】:
-
你可以使用
mongoshell 连接到 MongoDB 吗? -
不,响应是连接被拒绝。
-
所以首先你应该确保 MongoDB 运行正常...
-
mongod 不应该运行。 pymongo 代码没有捕获 ConnectionFailure 的异常。不知道我还能检查什么,因为 MongoD 不应该运行。
-
我可以让 mongo shell 和 pymongo 正常连接。我认为你没有理解我的问题。就是当它没有运行时,代码无法检测到连接失败。我需要这个的原因是对失败的连接进行详细而精细的检测。