ダウンロードスロットリングに使用できる Perl モジュールはありますか? 特定のファイルをダウンロードしたいのですが、ダウンロード速度を特定の KB/sec に制限します。
Geo
質問する
1270 次
2 に答える
6
WWW :: Curlのように見え、CURLOPT_MAX_RECV_SPEED_LARGEオプションが必要です。
#!/usr/bin/env perl
use strict;
use warnings;
use feature ':5.10';
use WWW::Curl::Easy;
# Setting the options
my $curl = WWW::Curl::Easy->new;
$curl->setopt(CURLOPT_HEADER,1);
$curl->setopt(CURLOPT_URL, 'http://www.google.com');
$curl->setopt(CURLOPT_MAX_RECV_SPEED_LARGE, 1);
my $response_body;
open my $fh, ">", \$response_body or die; # presumably this can be a real file as well.
$curl->setopt(CURLOPT_WRITEDATA,$fh);
my $ret = $curl->perform;
die 'Error: '. $curl->strerror($ret) if $ret;
my $response_code = $curl->getinfo(CURLINFO_HTTP_CODE);
say "Received response: $response_body";
この例では、1秒あたり1バイトでGoogleをダウンロードします。非常に遅い。
于 2009-02-12T03:00:00.717 に答える
3
Perl に限定されず、特定のプロトコルに限定されない手法は、トリクルを使用することです。
トリクルは、ポータブルで軽量なユーザー空間帯域幅シェイパーです。共同モード (trickled と一緒に) またはスタンドアロン モードで実行できます。
C でソケット接続の帯域幅を調整する方法も参照してください。
この手法を Perl モジュール (たとえば、IO::Handle のサブクラス) としてパッケージ化するとよいでしょうが、私はそれを知りません。
于 2009-02-12T01:45:21.767 に答える