asynqueue.iteration
module documentation
Part of asynqueue
Iteration, Twisted style!
This module contains multitudes; consider it carefully. It provides a
way of dealing with iterations asynchronously. The Deferator
yields
Deferred
objects, an asynchronous version of an iterator.
Even cooler is IterationProducer
,
which produces iterations to an implementor of
twisted.internet.interfaces.IConsumer
. You can make one out of
an iterator with iteratorToProducer
.
The Delay
object is also very useful, both as a Deferred-after-delay callable and a
way to get a Deferred
that fires when an event occurs. This is
the key to getting process.ProcessWorker
to work so nicely via Python's standard multiprocessing module.
Function | deferToDelay | Returns a Deferred that fires after the specified
delay (in seconds). |
Function | isIterator | |
Class | Delay | I let you delay things and wait for things that may take a while, in Twisted fashion. |
Class | Deferator | Deferred-yielding iterator. |
Class | Prefetcherator | I prefetch iterations from an iterator, providing a getNext
method suitable for Deferator . |
Class | ListConsumer | Bare-bones iteration consumer. |
Class | IterationProducer | Producer of iterations from a Deferator . |
Function | iteratorToProducer | Makes an iterator into an IterationProducer . |
def iteratorToProducer(iterator, consumer=None, wrapper=None):
Makes an iterator into an IterationProducer
.
Converts a possibly slow-running iterator into a Twisted-friendly
producer, returning a deferred that fires with the producer when it's
ready. If the the supplied object is not a suitable iterator (perhaps
empty), the result will be None
.
If a consumer is not supplied, whatever consumer gets this must register
with the producer by calling its non-interface method IterationProducer.registerConsumer
and then its IterationProducer.run
method to start the iteration/production.
If you supply a consumer, those two steps will be done automatically,
and this method will fire with a Deferred
that fires when the
iteration/production is done.