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

使用Python SDK连接Couchbase集群遇UnAmbiguousTimeoutException报错

解决Python SDK连接Couchbase集群的UnAmbiguousTimeoutException异常

问题根源

你遇到的UnAmbiguousTimeoutException本质不是网络超时,而是SSL证书名称不匹配导致握手失败——.NET SDK通过HttpIgnoreRemoteCertificateMismatch和KvIgnoreRemoteCertificateNameMismatch跳过了证书名称校验,所以能正常连接;Python SDK默认启用证书校验,握手失败后触发超时异常。

Python SDK对应配置方法

Python SDK没有直接命名为“忽略证书名称不匹配”的开关,但可以通过自定义SSL上下文实现相同效果,分别针对KV和HTTP服务配置:

1. 创建禁用证书校验的SSL上下文

import ssl

# 创建SSL上下文,禁用hostname检查与证书验证
ssl_ctx = ssl.create_default_context()
ssl_ctx.check_hostname = False  # 对应忽略证书名称不匹配
ssl_ctx.verify_mode = ssl.CERT_NONE  # 跳过证书有效性校验(可选,根据集群配置调整)

2. 在ClusterOptions中配置KV和HTTP服务的SSL选项

from couchbase.cluster import Cluster, ClusterOptions
from couchbase.auth import PasswordAuthenticator

# 初始化认证与集群选项
auth = PasswordAuthenticator("你的用户名", "你的密码")
options = ClusterOptions(auth)

# 为KV服务设置SSL上下文(对应.NET的KvIgnoreRemoteCertificateNameMismatch)
options.kv_ssl_options = ssl_ctx
# 为HTTP服务(查询、索引、管理等)设置SSL上下文(对应.NET的HttpIgnoreRemoteCertificateMismatch)
options.http_ssl_options = ssl_ctx

# 连接集群并等待就绪
cluster = Cluster("couchbases://你的集群地址", options)
cluster.wait_until_ready(timeout=30)  # 延长超时时间确保连接完成

验证要点

  • 确认连接字符串使用couchbases://(SSL协议),而非couchbase://
  • 如果集群证书是自签名的,verify_mode = ssl.CERT_NONE是必要的;如果是CA签发但名称不匹配,仅设置check_hostname = False即可
  • 超时时间建议设为30秒以上,避免因SSL握手耗时导致误判

内容的提问来源于stack exchange,提问作者aminrd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:54:56