“怎么做?”;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)