我想从 api (json) 下载超过 100k 的应用程序定义 我有一个简单的脚本:
BASE_PATCH="/media/sf_1/getappid/"
rm -rf ${BASE_PATCH}results
while read -r package <&3; do
mkdir -p ${BASE_PATCH}results
curl "https://api.test.com/v2/appid/${package}" -X GET -H "API-KEY: XxXxX-xXxXxXx" -H "Content-Type: application/json" --output ${BASE_PATCH}results/getappid.json
done 3<${BASE_PATCH}appIdId.json
这是可行的,但它会在每个循环中发出一个请求 - 这会花费很多时间(数小时)。 所以我的想法是并行进行。 1. 从列表中取出前 5 个 ID(在文件中) 2.开始下载这5个json文件 3.完成后取下5个id
也许有人知道如何做到这一点。 我想坚持使用 curl,现在我想下载一些东西,但可能很快我将需要使用 POST、PATCH 或 PUT(所以工具需要有这些选项)
最佳答案
使用 GNU Parallel 可能:
parallel -j 5 -a ${BASE_PATCH}appIdId.json curl "http://.../appid/{}" -X ....
您还可以添加 -X
以在每次调用 curl
时获取尽可能多的定义,从而避免创建 100k 个 curl 进程。
关于bash:在循环中 curl 并行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794400/