2012-02-09 11 views
6

Estoy intentando descargar los registros de excepciones de ráfaga con el siguiente comando.Curl: reposo/demora entre las solicitudes

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" 

Funciona bien y descarga los archivos csv en función del desplazamiento (10,20,30, etc.). Me gustaría insertar un retraso entre cada solicitud. ¿Es posible hacer eso en CURL?

Respuesta

4

Uso de cáscara del golpe (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 

Es un bucle infinito, y el retardo viene dado por el comando sleep.

Editar. En la máquina Windows, puede hacer este truco en su lugar:

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 
) 

El comando sleep no está disponible en Windows. Pero puede usar ping para "emularlo". Simplemente reemplace el XX anterior con el número de segundos que desea retrasar.

+0

Estoy usando Windows, ¿cómo puedo hacerlo en Windows? . También mirando el código anterior, parece que ejecutará el mismo comando una y otra vez, que no es lo que quiero. El comando se repetirá a medida que tenga desplazamiento = [0-100: 10]. Me gustaría mencionar un retraso o dormir el comando. ¿Es posible? – rfsk2010

+0

Para iterar sobre el desplazamiento (10, 20, 30, ..., 100), reemplace '(0,0,0)' arriba con '(0,100,10)'. Significa comenzar de 0 a 100, incrementar en 10. Pero ya no es un ciclo infinito. –

+0

Y use la variable% i en la dirección web. Entonces será '... & offset =% i' –

2

wget tiene opciones de retardo

wget --wait=seconds 

y también la opción de retraso aleatorio

wget --random-wait 
0

en bash, esto hará una pausa en un número aleatorio de segundos en el rango de 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 
Cuestiones relacionadas