2017-03-18 64 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