私の台本に問題がありました。私はxargsとcurlを使用してREST APIで100,000個以上のcurlコマンドを実行し、時にはその一部が502または504エラーで失敗します。
私がしなければならないのは、あきらめる前に最大5回失敗したカールコマンドを再試行することです。
これは私のコードスニペットです。
cat "$output.txt" | xargs -P 16 -I {} -L 1 curl -u >> response.txt
Output.txtファイルには100,000を超えるカールコマンドがあります。 response.txtでカールコマンドの応答をキャプチャして、何が失敗したのかを知ることができます。私のresponse.txtファイルは次のとおりです
Sending message: 8506 : response: 200
Sending message: 8507 : response: 504
Sending message: 8505 : response: 200
Sending message: 8509 : response: 200
504エラーのために失敗したメッセージ8507を再試行するためにxargsを使用するカールコード行をどのように変更しますか?
504エラー応答をresponse.txtファイルに保存する前に傍受できる必要があると思います。しかし、エラーが発生したコマンドをxargsとして再試行する方法がわかりません。
誰でも助けることができますか?
答え1
GNU Parallelを使用すると、次のようになります。
cat "$output.txt" |
parallel --retries 5 -P 16 -I {} -L 1 curl -u >> response.txt
または:
cat "$output.txt" |
parallel --retries 5 -P 16 curl -u >> response.txt