[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