Curl: сон / задержка между запросами - PullRequest
8 голосов
/ 09 февраля 2012

Я пытаюсь загрузить журналы исключений суматохи, используя следующую команду.

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"

Работает нормально и загружает CSV-файлы на основе смещения (10,20,30 и т. Д.). Я хотел бы вставить задержку между каждым запросом. Возможно ли это сделать в CURL?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2012

wget имеет опции задержки

wget --wait=seconds

, а также опция случайной задержки

wget --random-wait
4 голосов
/ 09 февраля 2012

Использование оболочки bash (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 выше на количество секунд, которое вы хотите отложить.

3 голосов
/ 10 февраля 2018

в 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
...