如何从bash循环运行多线程或并行curl命令?

问题描述 投票:0回答:1

我正在寻找一种使curl请求自动化的解决方案。

目前我通过

loop
选项进行管理,效果很好,但是因为我不知道如何实现并行性和多线程,所以我的解决方案运行速度太慢。

如何使当前的解决方案成为多线程并使其更快?

for i in {0000001..0000100}; do
  curl --retry 20  'http://example.com/Services/ServiceWS ' \
  -H 'Accept: */*' \
  -H 'Accept-Language: en-US,en;q=0.9' \
  -H 'Content-Type: text/xml; charset=UTF-8' \
  --data-raw 'User'$i'' \
  --insecure \
  --output 'User'$i.output
done

我应该在我的请求中发送

User0000001
,因此在数字之前放置零(0)。 [** 额外的问题,当我直接在 bash 中执行数字生成部分时,工作正常
for i in {0000001..0000100}; do echo $i; done
并且以 000 开头打印数字,但是当我将该脚本保存在
.sh
文件中并执行时,开始 00 将被忽略,并且 1 2 3结果显示为 4。]

--retry
用于管理
5xx
错误状态。管理状态并重试每个请求以获得
200
状态代码非常重要。

bash multithreading for-loop curl parallel-processing
1个回答
0
投票

我建议不要循环:

curl --retry 20 'http://example.com/Services/ServiceWS?[0000001-0000100]' \
-H 'Accept: */*' \
-H 'Accept-Language: en-US,en;q=0.9' \
-H 'Content-Type: text/xml; charset=UTF-8' \
--data-raw 'User'$i'' \
--insecure \
--output 'User#1.output' --parallel
© www.soinside.com 2019 - 2024. All rights reserved.