2016-04-22 35 views
2

我想从API(JSON)下载超过10万所的应用程序定义 我有简单的脚本是:庆典:卷曲在循环并行请求

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个IDS从列表(文件) 2.开始下载完成 3.之后的5个JSON文件需要未来5个IDS

也许有人有想法如何到这一点。 我要坚持,卷曲,现在我要下载的东西,但也许很快我将需要使用POST,PATCH或PUT(这样的工具需要有这些选项)

+0

我的回答,或其他任何人解决了你的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过点击投票计数旁边的空心绿色勾号/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

2

随着GNU并行可能:

parallel -j 5 -a ${BASE_PATCH}appIdId.json curl "http://.../appid/{}" -X .... 

您还可以添加-X以获取尽可能多的定义,每调用一次curl,从而避免创建100k卷曲过程。