2017-03-18 37 views
1

我有一个脚本运行以部署2个Web服务和一个前端应用程序。该脚本调用一个方法来检查2个后端服务是否启动并运行。如果是,则认为部署成功,否则恢复。卷曲重试机制

的2个服务有时会比前端更长的时间才能启动。目前我通过睡眠呼叫来延迟网络服务检查。这使他们有时间启动。

我想删除这个睡眠和增加在重试机制,因此如果服务停止,在执行一次检查,直到我得到回应。

Tp检查设备是否启动,我使用卷曲。我读过卷曲有一个重试机制,但我从来没有使用它。

以前有没有人解决过这个问题?我想了解解决它时必须考虑的事情,例如我是否重试,直到我从我的服务中获得HTTP 200?

任何任何建议如何测试?我需要找到一个服务失败。

编辑:我看到,--retry只对瞬态错误做出反应。'瞬时错误意味着:超时,FTP 4xx响应代码或HTTP 5xx响应代码。我的服务可以返回404,因此curl的重试不是我的解决方案。

回答

0

下面的语句将重试5次或5秒的连接超时最多40个seonds,并没有指数退避策略

curl --connect-timeout 5 \ 
    --max-time 10 \ 
    --retry 5 \ 
    --retry-delay 0 \ 
    --retry-max-time 40 \ 
    'http://your_url' 


--max-time 10  (how long each retry will wait) 
--retry 5   (it will retry 5 times) 
--retry-delay 0 (an exponential backoff algorithm) 
--retry-max-time (total time before it's considered failed) 
+0

为什么你建议关闭指数退避? – TheCoder

+0

我不建议关闭它,它是默认关闭的使用示例,您可以将其设置为任何你喜欢的。 –

+0

我尝试了以下方法:(curl -o/dev/null --retry 9 -v -L -w“%{http_code}”$ {url}并获取以下警告:瞬态问题:HTTP错误将在1秒内重试9次重试,但没有重试。 – TheCoder