通过Bash cURL并行或多个请求

时间:2014-07-17 18:43:33

标签: bash curl

我有这个简单的程序,我发送URLS并请求服务器处理该Url并发回结果以保存在文件中;一个接一个地循环。它运行正常,但唯一的问题是我有5,000个链接或URLs要处理,它需要很长时间一个接一个循环。输入网址彼此不同,没有模式。无论如何我可以并行传递10,20或30个请求并将结果保存在一个文件中吗? 这是我的代码。感谢

USER_GUID=$1
API_KEY=$2
EXTRACTOR_GUID=$3
URL_FILE=$4
DATA_FILE=$5

while read URL
do
    echo -n $URL
    curl -XPOST -H 'Content-Type: application/json' -s -d "{\"input\":{\"webpage/url\":\"$URL\"}}" "https://api.io/store/connector/$EXTRACTOR_GUID/_query?_user=$USER_GUID&_apikey=$API_KEY" >> $DATA_FILE
    echo "" >> $DATA_FILE
    echo " ...done"
done < $URL_FILE

1 个答案:

答案 0 :(得分:3)

使用GNU Parallel

cat $URL_FILE | parallel -j30 -q curl -XPOST -H 'Content-Type: application/json' -s -d "{\"input\":{\"webpage/url\":\"$URL\"}}" "https://api.io/store/connector/$EXTRACTOR_GUID/_query?_user=$USER_GUID&_apikey=$API_KEY" >> $DATA_FILE