我正在寻找一种使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
状态代码非常重要。
我建议不要循环:
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