我的剧本面临着挑战。我使用 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