“怎么做?”;curl——重试最长时间<;秒>&引用;工作
我不知道如何计算“怎么做?”;curl——重试最长时间<;秒>&引用;工作,curl,Curl,我不知道如何计算——重试最大时间。 如果我下载一个文件file.txt: curl --max-time 10 --retry 3 --retry-delay 5 --retry-max-time 32 'http://www.site.com/download/file.txt' [0-2]下载文件的50%需要2s,并且不再有速度 [2-10]它等待另一个8s,仍然没有速度,超时,将重试 [10-15]在重试之前等待5s#1 [15-25]仍然没有速度,将重试 [25-30]在重试之前等
——重试最大时间。
如果我下载一个文件file.txt
:
curl --max-time 10 --retry 3 --retry-delay 5 --retry-max-time 32 'http://www.site.com/download/file.txt'
[0-2]
下载文件的50%
需要2s
,并且不再有速度
[2-10]
它等待另一个8s
,仍然没有速度,超时,将重试
[10-15]
在重试之前等待5s
#1
[15-25]
仍然没有速度,将重试
[25-30]
在重试之前等待5s
#2
[30-34]
需要4s
才能下载文件的33%
,并且不再有速度
[34-40]
它等待另一个6s
,仍然没有速度,超时
此时(40s
)会停止重试吗
重试计时器是何时启动和停止的
--重试最长时间
重试计时器在第一次传输尝试之前重置。重试将像往常一样进行(请参阅--retry),如下所示
只要计时器没有达到给定的限制。请注意,如果计时器未达到限制,则
将发出请求,并且在执行时,可能需要比此给定时间段更长的时间。限制单个
请求的最大时间,使用-m,-max time。将此选项设置为零以避免超时重试。(加入
7.12.3)
让我试着澄清一下
当curl决定重试(因为使用了--retry
,并且条件是允许重试)并且设置了--retry max time
,curl检查自操作开始以来经过的总时间是否超过了--retry max time
。如果没有,它将允许再次重试
因此,在上面的命令行中:如果在考虑重试时,总时间少于32秒,它将进行另一次重试。如果总时间超过32秒,将不再重试
curl --connect-timeout 5 \
--max-time 10 \
--retry 5 \
--retry-delay 0 \
--retry-max-time 60 \
'http://www.site.com/download/file.txt'
||{| | | | | |}||
|....== | {...== | |....== | |.....| |..=== = | }
{ }
符号
====正在下载。。。(文件大小为5)
..... --连接超时5
||--最长时间10
--重试5次
>||<--重试延迟0([默认]exp backoff algo)
{}--重试最长时间60(游戏结束)
注
- 重试延迟1、2、4、8
- 重试#3连接超时
- 重试#5次永远不会发生
- 下载结束时失败(71秒)
很棒的图片。为了让读者更快地阅读,浏览一下这个例子会很有帮助。不管怎样,一点耐心在这里证明是有用的。
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)