Ich stellte eine Frage , wie man einen Python-Upload drosselt, der mich geschickt hat zu dieser Antwort , wo ich von einer kleinen Hilfsbibliothek namens socket-throttle
. Das ist alles gut und schön für reguläres HTTP und wahrscheinlich auch für die meisten einfachen Anwendungen des Sockets. Ich versuche jedoch, eine SSL-Verbindung zu drosseln, und zu versuchen, socket-throttle
mit der Standard-SSL-Bibliothek zu kombinieren (wird implizit von requests
verwendet), verursacht eine Ausnahme tief im Inneren der Bibliothek:
Nun, das ist ein Wermutstropfen. Wie Sie sehen können, versucht das Paket ssl
, eines der privaten Felder des Sockets, _sock
, anstatt socket
selbst zu verwenden. (Ist das nicht der Punkt von privaten Feldern, dass Sie nicht von außen auf sie zugreifen sollen? Grr.) Wenn ich versuche, mich in dieses Feld auf meinem ThrottledSocket
-Objekt zu injizieren, stoße ich auf dieses Problem:
Was nun? Gibt es woanders wo ich die Python-Kommunikation begrenzen könnte? Oder gibt es einen saubereren Weg, als die Socket-Implementierung zu überschreiben? Das ist sowieso egal, da das ssl
-Paket einfach versucht, es komplett zu umgehen.
Je nach Ihren Anforderungen können und sollten Sie dieses spezielle Problem auf Betriebssystemebene statt auf Anwendungsebene lösen.
Das Annähern an die Betriebssystemebene hat zwei Vorteile. Erstens macht es keinen Unterschied, wie die verwendeten Sockets verwendet werden (HTTP oder HTTPS oder IRC oder einige Ping-of-Death-Pakete - es spielt keine Rolle). Zweitens, je mehr Sie die verschiedenen Komponenten Ihres Systems entkoppeln, desto einfacher ist es, danach Änderungen vorzunehmen und Probleme zu beheben.
Es gibt Tools (zumindest für POSIX-konforme Systeme) zur Drosselung der Bandbreite von Netzwerkschnittstellen und / oder Prozessen. Vielleicht möchten Sie sich diese ansehen, zum Beispiel:
Diese Diskussionen könnten für Sie relevant sein:
Es sieht so aus, als wollten Sie HTTP-Anfragen drosseln. Wenn dies der Fall ist, können Sie stattdessen RequestsThrottler ausprobieren. Python Anfragen sind viel schöner als httplib.
Tags und Links python sockets ssl python-requests throttling