2012-02-09 36 views
6

Tôi đang cố gắng tải xuống các bản ghi ngoại lệ bằng cách sử dụng lệnh sau.Curl: sleep/delay giữa các yêu cầu

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" 

Nó hoạt động tốt và tải xuống tệp csv dựa trên độ lệch (10,20,30 vv). Tôi muốn chèn độ trễ giữa mỗi yêu cầu. Có thể làm điều đó trong CURL không?

Trả lời

4

Sử dụng vỏ 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 

Nó là một vòng lặp vô hạn, và sự chậm trễ được cho bởi lệnh sleep.

Chỉnh sửa. Trên máy tính Windows, bạn có thể thực hiện mẹo này thay thế:

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 
) 

Lệnh sleep không khả dụng trên Windows. Nhưng bạn có thể sử dụng ping để "mô phỏng" nó. Chỉ cần thay thế XX ở trên bằng số giây bạn muốn trì hoãn.

+0

Tôi đang sử dụng các cửa sổ như thế nào tôi có thể làm điều đó trong các cửa sổ? . cũng nhìn vào mã trên, có vẻ như nó sẽ chạy cùng một lệnh hơn và hơn mà không phải là những gì tôi muốn. Lệnh này sẽ lặp lại như tôi đã bù đắp = [0-100: 10]. Tôi muốn đề cập đến một sự chậm trễ hoặc ngủ i lệnh ,. là nó có thể? – rfsk2010

+0

Để lặp qua bù (10, 20, 30, ..., 100), thay thế '(0,0,0) 'ở trên bằng' (0,100,10) '. Nó có nghĩa là bắt đầu từ 0 đến 100, tăng thêm 10. Nhưng nó không phải là một vòng lặp vô hạn nữa. –

+0

Và sử dụng biến% i đến địa chỉ web. Vì vậy, nó sẽ là '... & offset =% i' –

2

wget có các tùy chọn trì hoãn

wget --wait=seconds 

và cũng chậm trễ ngẫu nhiên lựa chọn

wget --random-wait 
0

trong bash, điều này sẽ tạm dừng một số ngẫu nhiên của giây trong khoảng 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 
Các vấn đề liên quan