如何重试失败最多 5 次的 xargs 命令

如何重试失败最多 5 次的 xargs 命令

我的剧本面临着挑战。我使用 xargs 和curl 对 REST API 发出超过 100 000 个curl 命令,有时其中一些会失败并出现 502 或 504 错误。

我需要做的是在放弃之前重试那些失败最多 5 次的curl 命令。

这是我的代码片段

cat "$output.txt" | xargs -P 16 -I {} -L 1 curl -u >> response.txt

在output.txt文件中有超过100,000个curl命令。在response.txt中,我正在捕获curl命令的响应,所以我知道什么失败了。我的response.txt 文件如下所示

Sending message: 8506 : response: 200
Sending message: 8507 : response: 504
Sending message: 8505 : response: 200
Sending message: 8509 : response: 200

如何更改使用 xargs 重试消息 8507 的curl 代码行,该消息因 504 错误而失败?

我认为我应该可以在保存到 response.txt 文件之前拦截 504 错误响应。但是,我不知道如何作为 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

相关内容