Dan Stromberg <drsali...@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) _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python