我在 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
?
curl
默认情况下不会重试所有错误,即使使用--retry
.因此,要么使用
--retry-all-errors
(自 curl 7.71.0 起),要么使用wget -c
,这在没有额外选项的情况下有效。因为我们在基于 linux 的容器上的
--retry-all-errors
版本不支持curl
(错误消息:)curl: option --retry-all-errors: is unknown
,所以我们最终使用了一个while
循环: