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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:12:55