Bandbreiten-Drosselung in Python
Welche Bibliotheken gibt können Sie Steuern, die download-Geschwindigkeit von Netzwerk-Anfragen (http-insbesondere). Ich sehe nichts gebaut-in in urllib2 (noch in (Py)Qt, die ich beabsichtigen, mit).
Können Twisted-Steuern Sie die Bandbreite? Wenn nicht, wie kann ich die Puffergröße zum Lesen von urllib2 oder Verdreht? sleep
ing auszusetzen Netzwerk-Operationen ist keine option.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Natürlich verdreht kann. Sie möchten
verdreht.- Protokolle.Politik.ThrottlingFactory
. Nur wickeln Sie Ihre bestehenden Fabrik, bevor Sie übergeben es an, was will eine Fabrik.urllib2 nicht bieten eine Möglichkeit, dies zu tun, so würden Sie haben, zu erweitern, einige der Klassen, die es verwendet und zu implementieren, rate limiting selbst. Vielleicht möchten Sie sich bei diese Frage. Wenn Sie sich entscheiden, zu schreiben, limiter, Lesen, auf den token bucket und leaky-bucket algorithmen.
Alternativ können Sie pycurl zusammen mit der CURLOPTMAXRECVSPEEDLARGE option.
EDIT: Die urlgrabber - Paket wird zur Unterstützung der Drosselung so gut, und ist wahrscheinlich einfacher zu verstehen als pycurl.
Wenn Sie es vorziehen, um das Programm mit einer event-Schleife Modell, es gibt die Twisted-Ansatz, das wurde bereits erwähnt in einer anderen Antwort.