【发布时间】:2021-12-31 03:19:28
【问题描述】:
我想在 ubuntu 上生成数字列表并发出 http 请求并使用 cURL 和 jq 保存结果。
我已经使用 FOR 循环编写了单线程并且它可以工作,但我想在我的脚本中添加线程以更快地工作。
for i in `seq 12345 12550 `; do echo $i ;curl -s -k -X $'GET' \
-H $'Host: example.com' -H $'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' -H $'Accept: application/json, text/plain, */*' -H $'Accept-Encoding: gzip, deflate' -H $'Accept-Language: en-US,en;q=0.9,fa;q=0.8' -H $'Connection: close' \
$'https://example.com/pages/json/'$i'/list' | jq ".files[]"; done
如何向我的脚本添加线程或并行以加快我的进程?
我的目标是制作一个 bash 脚本,它接收来自用户的数字范围和线程计数的参数,并将每个请求的结果按请求的数字名称保存到特定路径。
$script.sh -numbers 12345-12550 -threads 100 -outpath ~/result/
【问题讨论】:
-
多线程多个 API 调用可能会被解释为滥用,并导致您的 IP/应用程序/主机被禁止或至少受到限制。 API 提供者通常对每日允许的请求设置限制,并实现分页和结果计数。在实施可能滥用的内容之前,请查看 API 的 TOS 允许的速率/数量和功能。
-
@LéaGris 我已经检查了我的限制,对此没有任何问题。
标签: bash multithreading shell curl