"requests.exceptions.SSLError: HTTPSConnectionPool(host='dashscope.aliyuncs.com', port=443): Max retries exceeded with url: /api/v1/services/aigc/text-generation/generation (Caused by SSLError(SSLZeroReturnError(6, 'TLS/SSL connection has been closed (EOF) (_ssl.c:1129)')))
modelscope中,线上服务报错怎么处理?"
根据您提供的错误信息 requests.exceptions.SSLError: HTTPSConnectionPool
,以及结合知识库中的相关资料,以下是针对该问题的详细分析和解决方案:
错误描述
错误提示表明在尝试通过 HTTPS 访问 dashscope.aliyuncs.com
时,SSL/TLS 握手失败,导致连接被关闭。具体表现为:
Max retries exceeded
:请求重试多次后仍然失败。SSLZeroReturnError
:TLS/SSL 连接被意外关闭。可能原因
根据知识库内容,以下几种情况可能导致此问题:
requests
库会验证服务器的 SSL/TLS 证书。如果证书链不完整或证书无效,会导致握手失败。解决方法:
certifi
)。如果确认目标服务的证书可信,可以临时禁用证书验证(仅用于调试):
import requests
response = requests.get(
"https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation",
verify=False # 禁用证书验证
)
print(response.text)
注意:生产环境中不建议禁用证书验证,应确保使用有效的证书。
解决方法:
使用自定义的 HostHeaderSSLAdapter
来确保在请求中正确传递 Host
头部信息。参考知识库中的代码示例:
import requests
from urllib.parse import urlparse
class HostHeaderSSLAdapter(requests.adapters.HTTPAdapter):
def __init__(self, resolved_ip):
super().__init__()
self.resolved_ip = resolved_ip
def send(self, request, **kwargs):
connection_pool_kwargs = self.poolmanager.connection_pool_kw
result = urlparse(request.url)
if result.scheme == 'https' and self.resolved_ip:
request.url = request.url.replace(
'https://' + result.hostname,
'https://' + self.resolved_ip,
)
connection_pool_kwargs['server_hostname'] = result.hostname
request.headers['Host'] = result.hostname
else:
connection_pool_kwargs.pop('server_hostname', None)
return super().send(request, **kwargs)
def access_url(url, resolved_ip):
session = requests.Session()
parsed_url = urlparse(url)
hostname = parsed_url.hostname
session.mount('https://' + hostname, HostHeaderSSLAdapter(resolved_ip))
try:
r = session.get(url)
print("success" + ", resp: " + r.text)
except Exception as e:
print("err: " + str(e))
if __name__ == "__main__":
access_url("https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation", "47.116.XX.XX")
dashscope.aliyuncs.com
的 443 端口。dashscope.aliyuncs.com
服务是否正常运行。curl
或 openssl
工具手动测试 HTTPS 连接,排查问题根源:
openssl s_client -connect dashscope.aliyuncs.com:443 -servername dashscope.aliyuncs.com
通过上述步骤,您可以逐步排查并解决 requests.exceptions.SSLError
问题。如果问题仍未解决,请提供更详细的错误日志或上下文信息,以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352