我有这个简单的程序,我发送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
答案 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