You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CosmosDB Emulator与Pymongo连接超时问题求助

解决Pymongo连接Cosmos DB Emulator频繁超时问题

问题现象

使用Pymongo连接Cosmos DB Emulator时频繁出现超时错误,仅偶尔能成功连接,报错信息:

Can't connect:localhost:10255: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 641990428201d2b41cc63b8f, topology_type: Unknown, servers: [<ServerDescription ('localhost', 10255) server_type: Unknown, rtt: None, error=NetworkTimeout('localhost:10255: timed out')>]>

启动命令:

PS C:\Program Files\Azure Cosmos DB Emulator> .\Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=3.6

连接代码参考官方示例,但问题未解决。

解决思路

  • 验证MongoDB端点监听状态
    启动模拟器后,执行命令检查10255端口是否被正确监听:

    netstat -ano | findstr :10255
    

    确认输出中的进程ID与Cosmos DB Emulator的PID一致。如果端口未监听,查看模拟器安装目录下Logs文件夹中的启动日志,排查MongoDB端点初始化失败原因,之后重启模拟器。

  • 调整Pymongo连接参数
    增加连接超时、重试机制,优化连接字符串的参数配置:

    import pymongo
    import sys
    
    def main():
        try:
            client = pymongo.MongoClient(
                "mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true",
                tls=True,
                tlsAllowInvalidCertificates=True,
                connectTimeoutMS=5000,
                serverSelectionTimeoutMS=10000,
                retryWrites=True
            )
            # 用ping命令替代server_info(),提升兼容性
            client.admin.command('ping')
            print("Connected to MongoDB")
            client.close()
        except (pymongo.errors.OperationFailure, pymongo.errors.ConnectionFailure) as err:
            sys.exit("Can't connect:" + str(err))
        except Exception as err:
            sys.exit("Error:" + str(err))
    
    if __name__ == "__main__":
        main()
    
  • 简化模拟器启动参数
    减少不必要的启动参数,确保基础功能正常:

    .\Microsoft.Azure.Cosmos.Emulator.exe /EnableMongoDbEndpoint=3.6 /NoFirewall
    

    同时确保以管理员身份运行模拟器,避免权限不足导致的端点初始化异常。

  • 匹配Pymongo与模拟器版本兼容性
    Cosmos DB Emulator的MongoDB 3.6端点建议搭配Pymongo 3.12.x~4.0.x版本。检查当前版本:

    pip show pymongo
    

    版本不匹配时,执行安装命令调整:

    pip install pymongo==3.12.3
    
  • 释放模拟器资源
    Cosmos DB Emulator内存占用较高,若系统内存不足会导致响应缓慢。打开任务管理器关闭其他冗余程序,或重启模拟器释放资源。

  • 清理模拟器缓存数据
    关闭模拟器后,删除默认数据目录C:\Users\<你的用户名>\AppData\Local\AzureCosmosDBEmulator,重新启动模拟器初始化干净的数据环境。

内容的提问来源于stack exchange,提问作者MalloryLP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:55:33