[Python-de] HTTP Upload Fortschritt und Geschwindigkeit ermitteln

"Martin v. Löwis" martin at v.loewis.de
Mon Mar 28 18:06:31 CEST 2005


Bernd Kaiser wrote:
> send wird ja auch noch von anderen Funktionen der httplib gebraucht, wie
> schreib ich das denn so dass sich das alles verträgt?

send wird dazu verwendet, Daten an die andere Seite zu senden. Es ist
aus Deiner Problembeschreibung nicht klar, ob Du *alle* gesendeten
Daten mitzählen willst oder nur die Datei im Dateiupload (also unter
Auslassung von HTTP headers usw.)

Ich bin davon ausgegangen, dass Du alle Daten zählen willst. Das machst
Du so:

class CountingConnection(httplib.Connection):
   def send(self, data):
     pos=0
     # Sende Stücken von 3000 byte
     while len(data)-pos > 3000:
       count_progress(3000)
       httplib.Connection.send(self, data[pos:pos+3000])
       pos+=3000
     # Sende den Rest
     if pos<len(data):
       count_progress(len(data)-pos)
       httplib.Connection.send(self, data[pos:])

Die Funktion count_progress musst Du nun selbst implementieren.

Ciao,
Martin