Curl:请求之间的睡眠/延迟

发布于 2025-01-04 04:45:34 字数 375 浏览 0 评论 0原文

我正在尝试使用以下命令下载混乱的异常日志。

curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"

它工作正常,并根据偏移量(10、20、30 等)下载 csv 文件。我想在每个请求之间插入延迟。在 CURL 中可以做到这一点吗?

I am trying to download flurry exception logs using the following command.

curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"

It works fine and it downloads the csv files based on the offset(10,20,30 etc). I would like to insert a delay between each request. Is it possible to do that in CURL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

旧情别恋 2025-01-11 04:45:34

使用 bash shell (Linux):

while :
do
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    sleep 5m
done

这是一个无限循环,延迟由 sleep 命令给出。

编辑。在 Windows 机器上,您可以执行此技巧:

for /L %i in (0,0,0) do (
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    ping -n XX 127.0.0.1>NUL
)

sleep 命令在 Windows 上不可用。但您可以使用 ping 来“模拟”它。只需将上面的 XX 替换为您想要延迟的秒数即可。

Using bash shell (Linux) :

while :
do
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    sleep 5m
done

It is an infinite loop, and the delay is given by the sleep command.

Edit. On Windows machine, you can do this trick instead :

for /L %i in (0,0,0) do (
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    ping -n XX 127.0.0.1>NUL
)

The sleep command is not available on Windows. But you can use ping to "emulate" it. Just replace the XX above with the number of seconds you want to delay.

腻橙味 2025-01-11 04:45:34

wget 有延迟选项

wget --wait=seconds

和随机延迟选项

wget --random-wait

wget has delay options

wget --wait=seconds

and also random delay option

wget --random-wait
纵情客 2025-01-11 04:45:34

在 bash 中,这将暂停 0-60 范围内的随机秒数:

for d in {0..100..10}
do
    i=`printf "%03d" $d`
    curl --cookie ./flurry.jar -k -L 'https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset='$d --output 'exception'$i'.csv'
    sleep $(($RANDOM*60/32767))
done

in bash, this will pause a random number of seconds in the range 0-60:

for d in {0..100..10}
do
    i=`printf "%03d" $d`
    curl --cookie ./flurry.jar -k -L 'https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset='$d --output 'exception'$i'.csv'
    sleep $(($RANDOM*60/32767))
done
与之呼应 2025-01-11 04:45:34

对于curl 7.84.0及更高版本,您可以使用请求速率限制 --rate 选项:

请求速率以 N/U 形式提供,其中 N 是整数,U 是时间单位。支持的单位有 s(秒)、m(分钟)、h(小时)和 d(天,以 24 小时为单位)。如果没有提供 /U,默认时间单位是每小时传输次数。

因此,要在每个请求之间等待 10 秒,请使用 curl --rate 6/m


在curl 8.10.0及更高版本中,您也可以使用数字作为分母:

从curl 8.10.0 开始,此选项接受可选的单位数。然后,请求率以 N / Z U(无空格)形式提供,其中 N 是数字,Z是多个时间单位,U 是一个时间单位。

您可以使用curl --rate 1/10s要求curl每10秒发送一个请求。

With curl 7.84.0 and later, you can use request rate limiting with the --rate option:

The request rate is provided as N/U where N is an integer number and U is a time unit. Supported units are s (second), m (minute), h (hour) and d (day, as in a 24 hour unit). The default time unit, if no /U is provided, is number of transfers per hour.

So to wait 10 seconds between each request, use curl --rate 6/m.


With curl 8.10.0 and later, you can use a number for the denominator as well:

Starting in curl 8.10.0 this option accepts an optional number of units. The request rate is then provided as N / Z U (with no spaces) where N is a number, Z is a number of time units and U is a time unit.

You could ask curl to send one request every 10 seconds with curl --rate 1/10s.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文