Package core :: Module streams :: Class Pump
[hide private]
[frames] | no frames]

Class Pump

source code

object --+
         |
        Pump

Pumps data from a ReadStream to a WriteStream and performs flow control where necessary to prevent the write stream from getting overloaded.

Instances of this class read bytes from a ReadStream and write them to a WriteStream. If data can be read faster than it can be written this could result in the write queue of the WriteStream growing without bound, eventually causing it to exhaust all available RAM. To prevent this, after each write, instances of this class check whether the write queue of the WriteStream is full, and if so, the ReadStream is paused, and a WriteStreamdrain_handler is set on the WriteStream. When the WriteStream has processed half of its backlog, the drain_handler will be called, which results in the pump resuming the ReadStream.

This class can be used to pump from any ReadStream to any WriteStream, e.g. from an HttpServerRequest to an AsyncFile, or from NetSocket to a WebSocket.

Instance Methods [hide private]
 
__init__(self, read_stream, write_stream) source code
 
set_write_queue_max_size(self, val)
Set the write queue max size
source code
 
start(self)
Start the Pump.
source code
 
stop(self)
Stop the Pump.
source code
 
bytes_pumped(self)
return the total number of bytes pumped by this pump.
source code
Class Variables [hide private]
  write_queue_max_size = property(fset= set_write_queue_max_size)
Method Details [hide private]

__init__(self, read_stream, write_stream)
(Constructor)

source code 
Overrides: object.__init__
(inherited documentation)

set_write_queue_max_size(self, val)

source code 

Set the write queue max size

Keyword arguments:

Parameters:
  • val - The write queue max size

start(self)

source code 

Start the Pump. The Pump can be started and stopped multiple times.

stop(self)

source code 

Stop the Pump. The Pump can be started and stopped multiple times.

bytes_pumped(self)

source code 

return the total number of bytes pumped by this pump.

Decorators:
  • @property