2011-08-28 92 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我认为你是对的 –