Go to the latest version of this document.

# ``twisted`.`internet`.`_producer_helpers`.`_PullToPush``

class documentation

`class _PullToPush: (source)`

Constructor: `_PullToPush(pullProducer, consumer)`

Implements interfaces: `twisted.internet.interfaces.IPushProducer`

View In Hierarchy

An adapter that converts a non-streaming to a streaming producer.

Because of limitations of the producer API, this adapter requires the cooperation of the consumer. When the consumer's `registerProducer` is called with a non-streaming producer, it must wrap it with `_PullToPush` and then call `startStreaming` on the resulting object. When the consumer's `unregisterProducer` is called, it must call `stopStreaming` on the `_PullToPush` instance.

If the underlying producer throws an exception from `resumeProducing`, the producer will be unregistered from the consumer.

Method | `__init__` | Undocumented
Method | `pauseProducing` | No summary
Method | `resumeProducing` | No summary
Method | `startStreaming` | This should be called by the consumer when the producer is registered.
Method | `stopProducing` | No summary
Method | `stopStreaming` | This should be called by the consumer when the producer is unregistered.
Method | `_pull` | A generator that calls `resumeProducing` on the underlying producer forever.
Instance Variable | `_consumer` | the consumer with which the underlying producer was registered.
Instance Variable | `_coopTask` | the result of calling `cooperate`, the task driving the streaming producer.
Instance Variable | `_finished` | `bool` indicating whether the producer has finished.
Instance Variable | `_producer` | the underling non-streaming producer.

def __init__(self, pullProducer, consumer): (source)

Undocumented

def pauseProducing(self): (source)
from `twisted.internet.interfaces.IPushProducer`

See Also
`IPushProducer.pauseProducing`

def resumeProducing(self): (source)
from `twisted.internet.interfaces.IPushProducer`

See Also
`IPushProducer.resumeProducing`

def startStreaming(self): (source)

This should be called by the consumer when the producer is registered.

Start streaming data to the consumer.

def stopProducing(self): (source)
from `twisted.internet.interfaces.IProducer`

See Also
`IPushProducer.stopProducing`

def stopStreaming(self): (source)

This should be called by the consumer when the producer is unregistered.

Stop streaming data to the consumer.

def _pull(self): (source)

A generator that calls `resumeProducing` on the underlying producer forever.

If `resumeProducing` throws an exception, the producer is unregistered, which should result in streaming stopping.

_consumer = (source)

the consumer with which the underlying producer was registered.

_coopTask = (source)

the result of calling `cooperate`, the task driving the streaming producer.

_finished: `bool` = (source)

`bool` indicating whether the producer has finished.

_producer = (source)

the underling non-streaming producer.