2011-08-28 45 views
0

我想設置--limit-rate選項下載由curb gem(ruby interface to curl)完成。如何在遏制寶石中設置限制利率選項?

在捲曲:

curl --limit-rate 10K http://server/large_file.rar 

對於由路邊下載我有這樣的代碼(加上進度,但是這不是有關這個問題):

require 'rubygems' 
require 'curb' 

request = 'http://server/large_file.rar'  
filename = 'large_file.rar' 

f = open(filename, 'wb') 

c = Curl::Easy.new(request) do |curl|  
    curl.on_body { |d| f << d; d.length } 
end 

c.perform 

f.close 

如何在此設置--limit-rate選項腳本?只要我可以告訴,沒有簡單的方法(我已經閱讀了rdoc並完成了一些Google搜索)。

回答

0

您可以通過在libcurl中設置CURLOPT_MAX_RECV_SPEED_LARGE來完成此操作。通過curb API,你會怎麼做:

c = Curl::Easy.new(request) do |curl| 
    curl.set(:max_recv_speed_large, download_limit) 
    curl.on_body { |d| f << d; d.length } 
end 

哪裏download_limit是每秒字節的最大下載速率的整數。

欲瞭解更多信息:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTMAXRECVSPEEDLARGE

+0

不爲我工作:(,它拋出:「爲捲曲::易未定義的方法‘設置’」都嘗試紅寶石1.8.7和1.9.2(兩者上。 RVM),使用最新的curb版本:0.7.15。 –

+1

我不認爲可以在不修改curb的ruby擴展C源代碼的情況下設置該選項。請參閱:https://github.com/taf2/curb/issues/ 49 – mwolfetech

+0

@mwolfetech我認爲你是對的 –