Go to the latest version of this document.

# ``twisted`.`internet`.`interfaces`.`IConsumer``

interface documentation

`class IConsumer(Interface): (source)`

Known subclasses: `twisted.protocols.ftp.IFinishableConsumer`, `twisted.internet.endpoints._IProcessTransportWithConsumerAndProducer`, `twisted.protocols.portforward._MakeTypesHappy`

Known implementations: `twisted.internet._dumbwin32proc.Process`, `twisted.internet._posixstdio.StandardIO`, `twisted.internet.abstract.FileDescriptor`, `twisted.internet.iocpreactor.abstract.FileHandle`, `twisted.internet.protocol.ProtocolToConsumerAdapter`, `twisted.internet.stdio.StandardIO`, `twisted.internet.testing.StringTransport`, `twisted.protocols.ftp.DTP`, `twisted.protocols.ftp.FileConsumer`, `twisted.protocols.loopback.LoopbackRelay`, `twisted.protocols.pcp.BasicProducerConsumerProxy`, `twisted.spread.util.FilePager`, `twisted.web._http2.H2Stream`, `twisted.web._newclient.ChunkedEncoder`, `twisted.web.http.HTTPChannel`, `twisted.web.http.Request`, `twisted.internet._pollingfile._PollableWritePipe`, `twisted.mail.maildir._MaildirMailboxAppendMessageTask`, `twisted.protocols.loopback._LoopbackTransport`

View In Hierarchy

A consumer consumes data from a producer.

Method | `registerProducer` | Register to receive data from a producer.
Method | `unregisterProducer` | Stop consuming data from a producer, without disconnecting.
Method | `write` | The producer will write data by calling this method.

def registerProducer(producer: `IProducer`, streaming: `bool`): (source)

Register to receive data from a producer.

This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing().

For `IPullProducer` providers, `resumeProducing` will be called once each time data is required.

For `IPushProducer` providers, `pauseProducing` will be called whenever the write buffer fills up and `resumeProducing` will only be called when it empties. The consumer will only call `resumeProducing` to balance a previous `pauseProducing` call; the producer is assumed to start in an un-paused state.

Parameters
producer:`IProducer` | Undocumented
streaming:`bool` | `True` if `producer` provides `IPushProducer`, `False` if `producer` provides `IPullProducer`.

Raises
`RuntimeError` | If a producer is already registered.

def unregisterProducer(): (source)

Stop consuming data from a producer, without disconnecting.

def write(data: `bytes`): (source)

The producer will write data by calling this method.

The implementation must be non-blocking and perform whatever buffering is necessary. If the producer has provided enough data for now and it is a `IPushProducer`, the consumer may call its `pauseProducing` method.