Curl 我怎样才能使卷曲重试?

Curl 我怎样才能使卷曲重试?,curl,Curl,我正在尝试让curl按如下方式重试: curl -vvv --retry 100 -H "Authorization: SNIP" "localhost:8086/foo" localhost:8086/foo配置为始终发送回“错误”HTTP状态代码。我尝试发送503、429和408,但在所有情况下,curl只尝试一次。以下是一些示例日志: * Trying 127.0.0.1:8086... * TCP_NODELAY set * Connecte

我正在尝试让curl按如下方式重试:

curl -vvv --retry 100 -H "Authorization: SNIP" "localhost:8086/foo"
localhost:8086/foo
配置为始终发送回“错误”HTTP状态代码。我尝试发送503、429和408,但在所有情况下,curl只尝试一次。以下是一些示例日志:

*   Trying 127.0.0.1:8086...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8086 (#0)
> GET /foo HTTP/1.1
> Host: localhost:8086
> User-Agent: curl/7.68.0
> Accept: */*
> Authorization: SNIP
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 408 Request Time-out
< Expires: 0
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< X-XSS-Protection: 1; mode=block
< Pragma: no-cache
< X-Frame-Options: DENY
< Date: Sun, 01 Nov 2020 21:27:00 GMT
< Connection: keep-alive
< X-Content-Type-Options: nosniff
< Content-Length: 0
< 
* Connection #0 to host localhost left intact

我在主机上运行curl7.68.0。Daniel Stenberg在对我的问题的评论中指出,7.66.0+有一个bug,它至少在408状态下破坏了重试功能。对于503来说,它似乎工作得很好,所以我可以切换到它

我还运行了一个docker容器(debian/10.5),其中curl的最新稳定包是7.64.0。在这个版本中,408、429和503似乎都被破坏了。我通过以下步骤将libcurl和curl升级到下一个可用的debian软件包(bullseye)解决了这个问题,在撰写本文时,该软件包是7.72.0:

  • 从下载curl
  • 从下载libcurl
  • 安装libcurl:
    dpkg-i libcurl4_7.72.0-1_amd64.deb
  • 安装curl:
    dpkg-i curl\u 7.72.0-1\u amd64.deb

  • 现在,“curl--retry 100 localhost/foo”在遇到503状态时起作用。

    这能回答您的问题吗?唉,实际上我在7.66.0及更高版本中意外地破坏了retry for 408!:-(我将修正:@emix,很遗憾,这并没有回答我的问题,因为我正在做答案所暗示的事情,但它不起作用。@DanielStenberg哇,谢谢!我的问题不仅仅是408,还有503和429,但我很高兴你找到了一个bug并修正了它。我已经用它进行了测试,它似乎对503和408有效,但对429无效。然而,在我的本地Spring引导服务器上,这些都不起作用。我将尝试看看是否可以解决响应中的差异。在7.67.0中,为
    --retry
    添加了429支持
    curl -V
    curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
    Release-Date: 2020-01-08
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
    Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets