2016-04-22 68 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捲曲過程。