我不知道--retry-max-time
如何计算。
如果我下载文件file.txt
:
curl --max-time 10 --retry 3 --retry-delay 5 --retry-max-time 32 'http://www.site.com/download/file.txt'
[ 0- 2]
下载2s
文件需要50%
,而且不再有速度。[ 2-10]
它等待另一个8s
,仍然没有速度,超时,将重试[10-15]
在重试#1 5s
[15-25]
仍然没有速度,会重试[25-30]
在重试#2 5s
[30-34]
下载4s
文件需要33%
,而且不再有速度。[34-40]
等待另一个6s
,仍然没有速度,超时此时curl
会40s
停止重试吗?
retry timer
何时启动并停止?
--retry-max-time <seconds>
The retry timer is reset before the first transfer attempt. Retries will be done as usual (see --retry) as
long as the timer hasn't reached this given limit. Notice that if the timer hasn't reached the limit, the
request will be made and while performing, it may take longer than this given time period. To limit a single
request´s maximum time, use -m, --max-time. Set this option to zero to not timeout retries. (Added in
7.12.3)
答案 0 :(得分:45)
curl --connect-timeout 5 \
--max-time 10 \
--retry 5 \
--retry-delay 0 \
--retry-max-time 60 \
'http://www.site.com/download/file.txt'
|<---0---->| {<---1---->| |<---2---->| |<---3---->| |<---4---->| } |<---5---->|
|....== | {...== | |....== | |.....| |..=== = | }
{ }
===== downloading... (file size is 5)
..... --connect-timeout 5
|<->| --max-time 10
<-5-> --retry 5
>| |< --retry-delay 0 ([default] exp backoff algo)
{ } --retry-max-time 60 (GAME OVER)
答案 1 :(得分:16)
让我试着澄清一下。
当curl决定重试时(因为使用--retry
并且条件允许重试)并且设置了--retry-max-time
,curl会检查自开始以来经过的总时间该操作已超过--retry-max-time
。如果没有,则允许再次重试。
因此,在上面的命令行中:如果在考虑重试时总时间少于32秒,则会再次进行重试。如果总时间超过32秒,则不再进行重试。