urllib.error.URLError: urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。原因与解决方法

今天一位朋友在用roop换脸的时候,结果报错如下:

(venv) E:\roop>python run.py
Traceback (most recent call last):
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1348, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1283, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1329, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1278, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1038, in _send_output
    self.send(msg)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 976, in send
    self.connect()
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1455, in connect
    self.sock = self._context.wrap_socket(self.sock,
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 513, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1071, in _create
    self.do_handshake()
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1342, in do_handshake
    self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\roop\run.py", line 6, in <module>
    core.run()
  File "E:\roop\roop\core.py", line 217, in run
    if not frame_processor.pre_check():
  File "E:\roop\roop\processors\frame\face_swapper.py", line 37, in pre_check
    conditional_download(download_directory_path, ['https://huggingface.co/henryruhs/roop/resolve/main/inswapper_128.onnx'])
  File "E:\roop\roop\utilities.py", line 142, in conditional_download
    request = urllib.request.urlopen(url)  # type: ignore[attr-defined]
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 519, in open
    response = self._open(req, data)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1391, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "C:\Users\杨\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>

(venv) E:\roop>

urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>

 

原因

这个错误通常意味着发送方(通常是客户端)已经关闭了连接,但接收方(通常是服务器)还在尝试使用该连接。这通常是由于远程主机的网络连接中断或超时导致的。可能是由于网络故障、路由器故障或者防火墙设置问题导致的。可以尝试重新连接,如果问题仍然存在,可以尝试检查网络设备,确保它们正常工作。

 

绝大多数情况,原因如下:

1、服务器没有及时处理来自客户端的数据(例如,长时间未响应),导致客户端关闭连接。

2、网络问题导致连接丢失,例如,一个中间的路由器无法将数据包传送到目标服务器,导致连接中断。

3、服务器或客户端出现了错误或崩溃,导致连接被强制关闭。

 

解决方法

像这种情况,理论上讲,一般的解决思路如下:

 

为了解决这个问题,可以尝试以下方法:

1、尝试使用不同的网络连接或从另一台计算机尝试连接服务器。

2、 检查客户端和服务器的防火墙设置,确保它们允许数据包通过。

3、检查代码中的错误或异常,可能需要调试代码来找出问题所在。

4、查看服务器或客户端的系统日志,以查看是否有任何错误或问题导致连接中断。

5、联系服务器管理员或网络管理员,以了解是否有任何问题或故障导致连接中断。

 

以我的这位朋友为例子:

由于他是用的roop换脸,他这主要的情况是在cmd命令窗口下,roop要先去:

打开

https://huggingface.co/henryruhs/roop/resolve/main/inswapper_128.onnx

这个网址下载相应的模型,大约有500M左右,但是一直下载不了。

 

最主要的是,这个网址他通过浏览器直接打开又可以下载。

 

这就造成了:

cmd命令行下载不了,浏览器却又可以下载,这就很无语,很尴尬。

 

我最终提出了一个解决思路:

1、浏览器打开这个网址先下载500M左右的模型。

2、再把下载的模型放到roop相应的文件夹内。例如:E:\roop\models\inswapper_128.onnx

    A+
发布日期:2023年07月31日 12:57:33  所属分类:Python
最后更新时间:2023-08-10 09:31:38
标签:
付杰
  • ¥ 129.0元
  • ¥ 49.0元
  • 市场价:199.0元
  • ¥ 199.0元
  • 市场价:399.0元
  • ¥ 99.0元
  • 市场价:199.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

  1. 头像 贷款信用卡 1

    我的就遇到了这种问题。但是用你的方法解决不了。那个模型下载好的。

    • 付杰 付杰

      @贷款信用卡 你位置放对了?下载下来要放到正确的位置,例如:E:\roop\models\inswapper_128.onnx