Ich möchte dort eine Bandbreitenbeschränkung einbauen. Grundsätzlich kann ich die aktuelle Download-Geschwindigkeit einfach drosseln:
Code: Alles auswählen
def send_data(buffer):
while 1:
data = buffer.read(2048)
if not data:
return
yield data
time.sleep(0.1)
self.request.send_response(send_data(buffer))
Nun kann ich also pro request die Geschwindigkeit begrenzen, ich möchte aber die Over-All-Geschwindigkeit kontrollieren.
Das kann ich erst, wenn ich bei jedem Download weiß, wieviel Downloads gerade gleichzeitig laufen...
Also theoretisch würde es reichen eine Variable hoch (wenn Download startet) und runter (wenn beendet) zu zählen... Nur, wie mach ich das?
Eine Variante, die mir spontan einfällt: in einem Verzeichnis, pro Download eine Datei erstellen und nach dem Download wieder löschen. Durch die anzahl der Dateien weiß ich, wieviel Downloads gerade gleichzeitig laufen... Aber das ist sicher nur eine frickel-cgi-only-Lösungsansatz
Nun könnte vielleicht SQLite nehmen. Nur was passiert bei gleichzeitigem Zugriff auf die Daten? Normalerweise ist eine DB genau dafür gedacht, oder?
Allerdings müßte es mit fastCGI/modPython doch ganz einfach gehen, ohne DB, oder???