[Twisted-Python] a question ablout DeferredList
hzqij
hzqij at qq.com
Tue Jan 2 21:32:41 EST 2007
i have a sample code about DeferredList like this:
from twisted.internet import reactor, defer
def printResult(results):
for resultInfo in results:
success, result = resultInfo
if success:
print result
reactor.stop()
def addTen(result):
return result + " ten"
deferred1 = defer.Deferred()
deferred2 = defer.Deferred()
deferred3 = defer.Deferred()
dl = defer.DeferredList([deferred1, deferred2,
deferred3]).addCallback(printResult)
deferred1.callback('one')
deferred2.callback('two')
deferred3.callback('three')
reactor.run()
then i run this code, it print:
one
two
three
but the reactor never stop even i have call reactor.stop() on
printResult, i press CTRL+C, some error happen:
Unhandled error in Deferred:
Traceback (most recent call last):
File "/usr/local/lib/python2.4/site-packages/twisted/internet/defer.py",
line 317, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/local/lib/python2.4/site-packages/twisted/internet/defer.py",
line 507, in _cbDeferred
self.callback(self.resultList)
File "/usr/local/lib/python2.4/site-packages/twisted/internet/defer.py",
line 239, in callback
self._startRunCallbacks(result)
File "/usr/local/lib/python2.4/site-packages/twisted/internet/defer.py",
line 304, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/local/lib/python2.4/site-packages/twisted/internet/defer.py",
line 317, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "defer5.py", line 8, in printResult
reactor.stop()
File "/usr/local/lib/python2.4/site-packages/twisted/internet/base.py",
line 342, in stop
raise RuntimeError, "can't stop reactor that isn't running"
exceptions.RuntimeError: can't stop reactor that isn't running
plz help me, thank you!
More information about the Twisted-Python
mailing list