最大5回失敗するxargsコマンドを再試行する方法

最大5回失敗するxargsコマンドを再試行する方法

私の台本に問題がありました。私は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

関連情報