]>
code.delx.au - pymsnt/blob - src/throttle.py
1 # Copyright 2006 James Bunton <james@delx.cjb.net>
2 # Licensed for distribution under the GPL version 2, check COPYING for details
5 from twisted
.internet
import task
8 def __init__(self
, consumer
, speed
):
9 self
.consumer
= consumer
12 self
.speed
= speed
# Bytes/second
15 self
.loopTask
= task
.LoopingCall(self
.loopFunc
)
16 self
.loopTask
.start(1.0)
18 def write(self
, data
):
20 raise ValueError, "I/O operation on closed 'file'"
33 if self
.canClose
and len(self
.buffer) == 0:
39 chunk
, self
.buffer = self
.buffer[:self
.speed
], self
.buffer[self
.speed
:]
40 self
.consumer
.write(chunk
)