我正在像这样运行bash脚本:
for i in {0..3250000..50000}
do
wget "http://xxx/select?q=*:*&row_size=50000&start=$i" -O $i.csv
done
每次发送请求时,我都必须等待完成并写入文件,然后继续循环.但是我想异步地做.我的意思是,它将发送请求并循环,而无需等待响应.但是,当响应出现时,它将做正确的事情.
我怎样才能做到这一点?
解决方法:
您可以使用xargs:
printf '%s\0' {0..50000..3250000} |
xargs -0 -I {} -n 1 -P 20 \
wget 'http://xxx/select?q=*:*&row_size=50000&start={}' -O {}.csv
-0选择NULL字符作为定界符,-I {}替换{}为
参数-n 1将单个参数移交给wget和-P 20
一次并行处理20个请求.
或者,您可以附加&到命令行以在后台执行它,然后等待进程完成.