[Twisted-Python] example for integrating generators with twisted
Paul Boehm
typo at soniq.net
Fri Sep 20 09:00:38 MDT 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