Регулировка пропускной способности в Python

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

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

10
задан ʇsәɹoɈ 15 August 2010 в 18:59
поделиться

2 ответа

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

8
ответ дан 3 December 2019 в 21:57
поделиться

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

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

EDIT: Пакет urlgrabber, похоже, также поддерживает дросселирование и, вероятно, более прост для понимания, чем pycurl.

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

8
ответ дан 3 December 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: