如何从 curl 中恢复:(56)发送失败:连接已重置?

如何从 curl 中恢复:(56)发送失败:连接已重置?

我在 Windows 上使用 curl 下载大型文件。但是,网络连接有时会重置,所以我想重新开始下载,但不确定应该使用什么参数。

我努力了

curl.exe --connect-timeout 240 --keepalive-time 240 --verbose --retry 50 --retry-max-time 0 --compressed -o "c:\largefile.bin" -C -https://example.org/largefile.bin

--retry不起作用。

当连接由于某种原因重置时,将--verbose显示以下内容:

* ...
* Closing connection 0
* schannel: shutting down SSL/TLS connection with example.org port 443
* Send failure: Connection was reset
* schannel: failed to send close msg: Failed sending data to the peer (bytes written: -1)
curl: (56) Send failure: Connection was reset

我如何让 curl 重试curl: (56) Send failure: Connection was reset

答案1

curl默认情况下,不会对所有错误进行重试,即使使用--retry

因此,要么使用--retry-all-errors(自 curl 7.71.0 起),要么使用wget -c,这样就无需额外的选项即可工作。

答案2

由于--retry-all-errors我们的版本不支持curl基于 Linux 的容器(错误消息curl: option --retry-all-errors: is unknown:),我们最终使用了一个while循环:

while ! curl -s -f -o largefile.bin https://example.org/largefile.bin
do echo "will retry in 2 seconds"; sleep 2; done

相关内容