2017-04-10 3 views
0

Ich verwende ein Python-Skript, um Daten von einem 3G-verbundenen Gerät zu posten.Python-Anfragen - Begrenzung der Bandbreitenauslastung

Es verwendet die Requests-Bibliothek. Wenn ich die Bytes jedes API-Aufrufs (Anfrage + Antwort unter Verwendung von this method) überwache, bekomme ich 645 Bytes pro Aufruf. Eine Standardbewegung in meinem überwachten System löst ca. 20 Anrufe, so bekomme ich ungefähr 13 KB Bandbreite pro Bewegung.

Allerdings ist die tatsächliche Nutzung viel höher: Bei einer Überwachung durch vnstat oder psutil (oder die Daten des SIM-Karten-Anbieters) beträgt eine Standardbewegung ca. 100kb statt 12-13kb (!). Wenn das Skript deaktiviert ist, werden keine Daten verwendet. Dies ist also nicht mit Hintergrundaufgaben verknüpft. Außerdem interagiert mein Skript nicht anders als diese API-Anfragen mit dem Web ... Ich kann nicht verstehen, woher dieser Unterschied kommt.

Gibt es Bandbreitenauslastung in den Python Requests Anrufe, die ich vermisse?

Antwort

0

Wenn die API irgendwelche Protokolle verwendet, kann sie die Bytes verbrauchen. Zum Beispiel, Verbindung über HTTP könnte "HEADER BYTES + CRLFCRLF" + BODY

Meiner Meinung nach ist die zuverlässigste Möglichkeit, das Byte zu fangen mit pcap oder wireshark, um das Netzwerk zu erfassen. Wenn Sie den Browser zum Testen verwenden, verfügen die meisten Browser über eine eigene Netzwerküberwachungsansicht für die Programmierer. (zB firefox ctrl + shirt + i)

Wenn Sie das Byte in der unteren Ebene betrachten, fügt jeder Netzwerk-Layer (wie OSI 7) einige Header hinzu und manchmal (falls. tcp) die Daten für Daten Korrektur.

Viel Glück