[Twisted-Python] example for integrating generators with twisted

Paul Boehm typo at soniq.net
Fri Sep 20 11:00:38 EDT 2002


see example
-------------- next part --------------
#!/usr/bin/python

from __future__ import generators

from twisted.internet import reactor, defer

class DeferredGenerator:
    def __init__(self, arg = None):
        self.next = self._Code().next
        self.callback(arg)
    def callback(self, data):
        self._newdata = data
        try:
            ret = self.next()
            if isinstance(ret, defer.Deferred):
                ret.addCallback(self.callback)
        except StopIteration:
            pass
    def newdata(self):
        return self._newdata
    def _Code(self): # template method, subclass me!
        yield "OK" # Yield non-deferred to indicate end of initialization.

class TestGen(DeferredGenerator):
    def _Code(self):
        yield "OK"

        x = self.newdata()

        defr = defer.Deferred()
        defr.callback(9)
        yield defr

        y = self.newdata()
        print x + y

if __name__ == "__main__":
    gen = TestGen()
    gen.callback(5)
    reactor.run()


More information about the Twisted-Python mailing list