Flask对接MongoDB Atlas访问/create接口报ServerSelectionTimeoutError求助
排查步骤
- 首先检查MongoDB Atlas的IP白名单配置:
登录Atlas控制台,进入对应集群的「Network Access」页面,确认你当前运行Flask服务的设备公网IP已经被加入白名单。如果是本地测试临时调试,可以临时添加0.0.0.0/0允许所有IP访问(生产环境禁止此配置)。 - 检查数据库用户权限:
进入Atlas的「Database Access」页面,确认连接字符串中使用的test用户,拥有你连接的myFirstDatabase的读写权限,没有权限限制。 - 调整连接参数:
你可以在MONGO_URI末尾追加tlsAllowInvalidCertificates=true参数,避免本地证书校验失败导致连接断开,修改后的URI示例:app.config["MONGO_URI"] = "mongodb+srv://test:<password>@cluster0.xdweu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority&tlsAllowInvalidCertificates=true" - 检查本地网络限制:
确认本地防火墙、代理没有屏蔽27017端口的出站请求,也可以尝试切换手机热点运行代码测试,排除运营商或公司网络封锁MongoDB端口的可能。 - 验证依赖版本兼容性:
如果使用的pymongo版本高于4.0,可能存在和flask-pymongo、Atlas集群的兼容问题,可以尝试降级pymongo到3.12.x版本:pip install pymongo==3.12.3
你也可以在代码中新增启动时连接测试,提前判断是否连通:
# 初始化mongo之后添加 if __name__ == '__main__': # 测试连接 try: mongo.db.list_collection_names() print("数据库连接成功") except Exception as e: print("数据库连接失败", e) app.run(debug=True)
内容的提问来源于stack exchange,提问作者Umut K.
相关产品推荐
相关产品推荐

