MongoDB Atlas ServerSelectionTimeoutError:SSL 握手失败

问题描述 投票:0回答:1

我很难使用 pymongo 驱动程序从 mongodb 数据库中获取一些数据。我不断收到以下错误:

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 和 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))

这是我的代码以防万一,但我几乎 100% 确定这不是我的脚本的问题。

我还必须提到,就在几天前,我的代码还运行得很好。

在谷歌上我找不到任何可行的相关解决方案。 我试过:

  • 将python更新到版本3.11.2
  • 按照建议将 certifi.where() (可能是 ssl 证书路径)分配给 MongoClient 实例的 tlsCAFile 属性 here
  • 即使设置 ssl=False 也不起作用(可能是因为它不是我所遇到的证书问题)
  • 研究 TLSV1_ALERT_INTERNAL_ERROR,但找不到任何比 这个答案
  • 更好地解释发生的事情的内容

好奇是否有人以前遇到过此类错误并可以帮助解决。

python mongodb ssl pymongo
1个回答
0
投票

我之前也遇到过这种错误,请确保您的计算机上没有运行任何VPN。此外,检查 mongoDB atlas 网络设置,检查您的 IP 是否被允许。有时,这个错误显然没有任何原因发生,就像我的情况一样,但如果你稍后再尝试,它就不会发生。

© www.soinside.com 2019 - 2024. All rights reserved.