[Twisted-Python] deferred graph?
Tom Prince
tom.prince at ualberta.net
Wed Jul 18 23:04:13 EDT 2012
Dan Stromberg <drsalists at gmail.com> writes:
> Strangely, this doesn't give the report until after the sleep finishes...
That is because the code you included doesn't actually print the
returned traceback. The reason that it gets printed at the end is
because it gets garbage collected then.
The following code prints out the traceback twice, with the first before
the first sleep and the second (prefixed with "Unhandled error in
Deferred:") before the second sleep.
Tom
#!/usr/bin/python
import time
from twisted.internet import defer
defer.setDebugging(True)
def functionReturningDeferred():
return defer.succeed('Some value')
d = functionReturningDeferred()
def printValue(value):
print 'Yay, I got %r' % value
return value
def second_callback(value):
print 'still %r' % value
return gen_error()
def third_callback(value):
print 'and still %r' % value
return value
def gen_error():
return defer.fail(AssertionError)
def got_error(value):
print 'bad thing: %r' % value
d.addCallback(printValue)
d.addCallback(second_callback)
d.addCallback(third_callback)
print d._debugInfo._getDebugTracebacks()
time.sleep(2)
del d
time.sleep(2)
More information about the Twisted-Python
mailing list