2010-08-15 9 views
10

Quelles bibliothèques permettent de contrôler la vitesse de téléchargement des requêtes réseau (http en particulier). Je ne vois rien intégré dans urllib2 (ni dans (Py) Qt que j'ai l'intention d'utiliser).Limitation de bande passante en Python

Can Bande passante de contrôle Twisted? Si non, comment puis-je contrôler la taille du tampon de lecture de urllib2 ou Twisted? sleep de suspendre les opérations réseau n'est pas une option.

Répondre

8

Bien sûr boîte torsadée. Vous voulez twisted.protocols.policies.ThrottlingFactory. Il suffit d'envelopper votre usine existante avant de la passer à tout ce qui veut une usine.

+1

Pouvez-vous poster un exemple complet? Je suis un peu perdu par toutes les classes. –

8

urllib2 n'offre pas un moyen de le faire, vous devrez donc étendre certaines des classes qu'il utilise et implémenter vous-même la limitation de débit. Vous voudrez peut-être regarder this question. Si vous décidez d'écrire un limiteur, lisez les algorithmes token bucket et leaky bucket. Vous pouvez également utiliser pycurl avec l'option CURLOPTMAXRECVSPEEDLARGE.

EDIT: Le package urlgrabber semble également prendre en charge la limitation et est probablement plus facile à comprendre que pycurl.

Si vous préférez programmer en utilisant un modèle de boucle d'événements, il y a l'approche Twisted, qui a déjà été mentionnée dans une autre réponse.

Questions connexes