Domanda

C'è un modulo Perl disponibile per il download la limitazione? Vorrei scaricare un certo file, ma limitare la velocità di download a un numero specifico di KB / sec.

È stato utile?

Soluzione

appare come WWW :: Curl e l'opzione è CURLOPT_MAX_RECV_SPEED_LARGE ciò che si vuole:

#!/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";

In questo esempio, scaricare Google a un byte per secondo. Molto lento.

Altri suggerimenti

Una tecnica non limitati a Perl e non limitato ad un particolare protocollo è quello di utilizzare trickle :

  

trickle è un portatile leggero banda userspace shaper. Può funzionare in modalità collaborativa (insieme con trickled) oppure in modalità stand alone.

Come ti strozzare la larghezza di banda di una connessione socket in C?

Sarebbe bello per confezionare questa tecnica come un modulo Perl (per esempio che le sottoclassi IO :: Handle) ma io non sono a conoscenza di una.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top