requests.exceptions.ProxyError: HTTPSConnectionPool(host='http://www.modelscope.cn', port=443): Max retries exceeded with url: /api/v1/models/iic/nlp_raner_named-entity-recognition_chinese-base-cmeee/revisions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))),ModelScope中这个错误怎么办呀?
根据您提供的错误信息,requests.exceptions.ProxyError 表明在尝试通过代理连接到目标服务器时发生了问题。具体错误提示 WinError 10061 表示目标计算机拒绝了连接请求。这通常与网络配置、代理设置或目标服务的可用性有关。
以下是针对该问题的详细分析和解决方案:
错误信息中提到 ProxyError,说明您的代码可能配置了代理,但代理无法正常工作。请检查以下内容: - 是否需要代理:如果目标服务(如 ModelScope)可以直接访问,建议移除代理设置。 - 代理配置是否正确:如果您确实需要使用代理,请确保代理地址和端口配置正确,并且代理服务正在运行。
在代码中显式禁用代理,或者检查代理配置是否正确。例如:
import requests
# 禁用代理
proxies = {
"http": None,
"https": None,
}
response = requests.get(
"https://www.modelscope.cn/api/v1/models/iic/nlp_raner_named-entity-recognition_chinese-base-cmeee/revisions",
proxies=proxies
)
print(response.text)
如果必须使用代理,请确保代理地址有效:
proxies = {
"http": "http://your-proxy-server:port",
"https": "http://your-proxy-server:port",
}
response = requests.get(url, proxies=proxies)
错误信息表明目标主机 http://www.modelscope.cn 的连接被拒绝。请确认以下几点: - 目标服务是否可用:访问 https://www.modelscope.cn,确保服务正常运行。 - URL 是否正确:检查请求的 URL 是否拼写正确,尤其是协议部分(应为 https:// 而非 http://)。
直接在浏览器中访问目标 URL,验证服务是否正常响应。如果服务不可用,请联系 ModelScope 技术支持团队。
错误 WinError 10061 可能是由于本地防火墙或网络策略阻止了对外部服务的访问。请检查以下内容: - 本地防火墙规则:确保允许 Python 或相关工具访问外部网络。 - 公司网络限制:如果您在公司内网环境中,可能存在网络限制。尝试切换到其他网络(如手机热点)进行测试。
如果目标服务支持通过 IP 地址访问,您可以尝试使用 IP 直连的方式绕过域名解析问题。参考知识库中的 IP 直连方案,可以通过自定义 HostHeaderSSLAdapter 实现。
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['assert_hostname'] = result.hostname
request.headers['Host'] = result.hostname
else:
connection_pool_kwargs.pop('assert_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:", r.text)
except Exception as e:
print("Error:", str(e))
# 替换为目标服务的实际 IP 地址
access_url("https://www.modelscope.cn/api/v1/models/iic/nlp_raner_named-entity-recognition_chinese-base-cmeee/revisions", "目标IP地址")
证书校验问题:如果目标服务的 SSL 证书无效或不匹配,可能会导致连接失败。您可以临时禁用证书校验(仅用于调试):
response = requests.get(url, verify=False)
注意:生产环境中不建议禁用证书校验,可能存在安全风险。
SNI 配置:如果目标服务使用了 SNI(Server Name Indication),请确保客户端支持 SNI 配置。参考知识库中的 SNI 场景解决方案。
根据上述分析,您可以按照以下步骤排查和解决问题: 1. 检查并调整代理设置。 2. 验证目标服务的可用性和 URL 正确性。 3. 排查本地防火墙或网络限制。 4. 尝试使用 IP 直连方案。 5. 确保证书校验和 SNI 配置正确。
如果问题仍未解决,请提供更多上下文信息(如完整的代码片段或网络环境描述),以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉答疑群:44837352