使用PyMongo连接MongoDB Atlas遇SSL握手失败问题求助
PyMongo连接MongoDB遭遇SSL握手失败错误,求解决方案
错误信息
pymongo.errors.ServerSelectionTimeoutError: SSL handshake failed: ac-mtxrap4-shard-00-01.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007),SSL handshake failed: ac-mtxrap4-shard-00-00.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007),SSL handshake failed: ac-mtxrap4-shard-00-02.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007), Timeout: 30s, Topology Description: <TopologyDescription id: 64f0dc87584d8256bd425707, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-mtxrap4-shard-00-00.vfg8vpd.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('SSL handshake failed: ac-mtxrap4-shard-00-00.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007)')>, <ServerDescription ('ac-mtxrap4-shard-00-01.vfg8vpd.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('SSL handshake failed: ac-mtxrap4-shard-00-01.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007)')>, <ServerDescription ('ac-mtxrap4-shard-00-02.vfg8vpd.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('SSL handshake failed: ac-mtxrap4-shard-00-02.vfg8vpd.mongodb.net:27017: [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1007)')>]>
环境信息
- 系统:Linux Ubuntu 22.04
- Python版本:3.10.12(曾升级到3.11.2测试)
- PyMongo版本:4.5.0
代码片段
from pymongo.mongo_client import MongoClient from pymongo.server_api import ServerApi from pymongo import database from credentials import mongoDB_uri import json from bson import json_util client = MongoClient(mongoDB_uri, server_api=ServerApi('1')) class mongoDB: def __init__(self, client=client): self.client = client def getImageMetadata(self): db = database.Database(client=self.client, name="productimagedata") cl = db.get_collection(name="images") imageMetaData = [] for obj in cl.find(): imageMetaData.append(obj) return json.loads(json_util.dumps(imageMetaData))
已尝试的解决方法
- 将Python升级到3.11.2版本
- 配置MongoClient的
tlsCAFile属性为certifi.where()返回的SSL证书路径 - 尝试设置
ssl=False,未生效 - 查阅
TLSV1_ALERT_INTERNAL_ERROR相关资料,未找到有效解释
补充说明
代码几天前还能正常运行,几乎可以确定问题不在脚本本身,谷歌搜索未找到有效解决方案,求有相关经验的人提供解决办法。
内容的提问来源于stack exchange,提问作者bonbon
相关产品推荐
相关产品推荐

