PyMongo 4.10异步客户端连接失败时未抛出异常的问题咨询
PyMongo 4.10异步客户端连接失败时未抛出异常的问题咨询
我发现PyMongo 4.10的异步客户端在连接出现问题时,并不会抛出异常,这和我的预期不太一样。
我按照官方文档里的连接示例做了测试——当本地没有运行MongoDB服务时,执行以下代码:
>>> import asyncio >>> from pymongo import AsyncMongoClient >>> client = AsyncMongoClient('mongodb://localhost:27017/') >>> asyncio.run(client.aconnect()) # 没有任何错误抛出
之后我开启了DEBUG级别的日志,能看到连接被拒绝的信息,但依旧没有收到预期中的异常:
>>> import logging >>> logging.basicConfig(level='DEBUG') >>> asyncio.run(client.aconnect()) DEBUG:asyncio:Using selector: KqueueSelector DEBUG:pymongo.topology:{"topologyId": {"$oid": "676020be62e71d3fe6f27721"}, "serverHost": "localhost", "serverPort": 27017, "awaited": false, "durationMS": 2.786167000522255, "failure": "\"AutoReconnect('localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')\"", "message": "Server heartbeat failed"}
我本来以为这个DEBUG日志里的错误应该会以异常的形式抛出,是不是我对PyMongo异步客户端的工作机制有什么误解?
备注:内容来源于stack exchange,提问作者Plup




