]>
code.delx.au - pymsnt/blob - src/tlib/throttle.py
1 from twisted
.internet
import task
6 def __init__(self
, consumer
, speed
):
7 self
.consumer
= consumer
10 self
.speed
= speed
# Bytes/second
13 self
.loopTask
= task
.LoopingCall(self
.loopFunc
)
14 self
.loopTask
.start(1.0)
16 def write(self
, data
):
18 raise ValueError, "I/O operation on closed 'file'"
25 if self
.canClose
and len(self
.buffer) == 0:
31 chunk
, self
.buffer = self
.buffer[:self
.speed
], self
.buffer[self
.speed
:]
32 self
.consumer
.write(chunk
)