Регулирование пропускной способности в Python - PullRequest
10 голосов
/ 15 августа 2010

Какие библиотеки позволяют контролировать скорость загрузки сетевых запросов (в частности, http).Я не вижу ничего встроенного в urllib2 (ни в (Py) Qt, который я собираюсь использовать).

Может ли Twisted контролировать пропускную способность?Если нет, то как я могу контролировать размер буфера чтения urllib2 или Twisted?sleep приостановка сетевых операций невозможна.

Ответы [ 2 ]

8 голосов
/ 15 августа 2010

urllib2 не предлагает способа сделать это, поэтому вам придется расширить некоторые используемые им классы и реализовать ограничение скорости самостоятельно. Возможно, вы захотите посмотреть на этот вопрос . Если вы решили написать ограничитель, прочтите алгоритмы token bucket и leaky bucket .

Также вы можете использовать pycurl вместе с опцией CURLOPTMAXRECVSPEEDLARGE .

РЕДАКТИРОВАТЬ: urlgrabber пакет также поддерживает троттлинг и, вероятно, легче понять, чем pycurl.

Если вы предпочитаете программировать, используя модель цикла событий, есть подход Twisted, который уже упоминался в другом ответе.

8 голосов
/ 15 августа 2010

Конечно витая банка. Вы хотите twisted.protocols.policies.ThrottlingFactory. Просто заверните свою существующую фабрику в нее, прежде чем передать ее тому, кто хочет фабрику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...