【发布时间】:2017-07-21 01:48:51
【问题描述】:
我使用以下命令将浏览器的响应从 URL 列表附加到相应的输出文件中:
wget -i /Applications/MAMP/htdocs/data/urls.txt -O - \
>> /Applications/MAMP/htdocs/data/export.txt
这工作正常,完成后显示:
Total wall clock time: 1h 49m 32s
Downloaded: 9999 files, 3.5M in 0.3s (28.5 MB/s)
为了加快速度,我使用了:
cat /Applications/MAMP/htdocs/data/urls.txt | \
tr -d '\r' | \
xargs -P 10 $(which wget) -i - -O - \
>> /Applications/MAMP/htdocs/data/export.txt
打开同时连接使其更快一点:
Total wall clock time: 1h 40m 10s
Downloaded: 3943 files, 8.5M in 0.3s (28.5 MB/s)
如您所见,它以某种方式省略了一半以上的文件,并且需要大约 .同时完成。我猜不出为什么。我在这里要做的是使用xargs 一次下载10 个文件(并行处理),并在‘STDOUT’ 完成时跳转到下一个URL。我是否遗漏了什么,或者可以通过其他方式完成吗?
另一方面,有人能告诉我关于连接可以设置的限制是多少吗?知道我的处理器可以处理多少个连接,而不会使我的系统太慢,甚至避免某种类型的SYSTEM FAILURE,这真的很有帮助。
我的API Rate-Limiting如下:
每分钟的请求数100
单个请求中的映射作业数100
每分钟映射作业的总数10,000
【问题讨论】:
标签: multithreading bash shell wget xargs