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

MongoDB集群插入集合时遇ServerSelectionTimeoutError求助

解决MongoDB集群插入时的ServerSelectionTimeoutError问题

一、排查网络连通性问题

WinError 10060本质是网络层面的连接阻断问题,优先从以下方向排查:

  • 检查防火墙与代理:确认本地防火墙未拦截27017端口的出站请求;若使用代理工具,需验证代理能正常访问MongoDB集群的节点域名(如ac-ho1c2e3-shard-00-00.masfo3b.mongodb.net)。可通过以下命令测试连通性:
    telnet ac-ho1c2e3-shard-00-00.masfo3b.mongodb.net 27017
    
    若连接失败,需调整防火墙规则或代理配置。
  • 切换网络环境:如果当前使用公司内网等受限网络,尝试切换到个人热点等不受限环境,验证是否为网络限制导致的问题。

二、修正代码中的错误与优化

你的代码存在变量不匹配、连接验证缺失等问题,修正并优化后的代码如下:

import pymongo
import pandas as pd
import json

database_name = "mydb"  

try:
    # 补充节点选择超时参数,延长等待时间
    client = pymongo.MongoClient(
        "mongodb+srv://<user>:<password>@cluster0.masfo3b.mongodb.net/?retryWrites=true&w=majority",
        connectTimeoutMS=30000,
        socketTimeoutMS=60000,
        serverSelectionTimeoutMS=60000
    )
    # 主动执行ping命令验证连接,提前暴露问题
    client.admin.command('ping')
    db = client[database_name]
    print("MongoDB 连接成功")
except Exception as e:  
    print(f"MongoDB 连接失败:{str(e)}")

Coll = 'SPL'
splAddressColl = db[Coll]

spAddressData2 = pd.read_excel('Addresses.xlsx')
records2 = json.loads(spAddressData2.T.to_json()).values()
# 给插入操作添加异常捕获,明确错误类型
try:
    splAddressColl.insert_many(records2)
    splAddressColl.create_index([('Address', 'text')])
    print("数据插入与索引创建成功")
except pymongo.errors.ServerSelectionTimeoutError as e:
    print(f"插入数据时超时:{str(e)}")
except Exception as e:
    print(f"插入数据失败:{str(e)}")

关键修正点:

  • 补全缺失的json导入,统一pandas引用为pd
  • 修正变量名不匹配问题:将splColl改为splAddressColl,避免未定义错误
  • 增加client.admin.command('ping')主动验证连接,提前发现连接异常
  • 配置serverSelectionTimeoutMS参数,延长集群节点选择的超时时间
  • 给插入操作添加针对性异常捕获,便于定位问题

三、检查MongoDB集群配置

  • 验证IP白名单:登录MongoDB Atlas控制台,确认当前设备的公网IP已加入集群的IP白名单,未在白名单内的IP会被集群拒绝连接。
  • 查看集群状态:在Atlas控制台检查所有分片节点的运行状态,确认节点无宕机、维护等异常情况。

四、更新pymongo版本

旧版本pymongo可能与MongoDB新集群存在兼容性问题,执行以下命令升级到最新稳定版:

pip install --upgrade pymongo

内容的提问来源于stack exchange,提问作者Vaibbhav Devender Kalra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:07:44