[Twisted-Python] echo server using deferToThread
snacktime at gmail.com
Mon Feb 7 00:07:49 EST 2005
> > replacing self.transport.write with self.sendLine just makes the code
> > block when it hits self.sendLine.
> This seems unlikely, since sendLine never blocks. sendLine is nothing
> more than a call to transport.write() with the appropriate additional
> bytes tacked on automatically ("\r\n" by default).
> Echo subclasses Protocol, though. sendLine is a method of LineReceiver.
> When you call sendLine on your Protocol instance, an AttributeError is
> raised. The exception is translated into a Failure (so as to be handleable
> asynchronously). But no handler is ever set up for it, so it goes
> unreported, unless you get lucky and the Failure gets garbage collected
> in a timely fashion.
> So, if you get stuck with a Deferred that appears to just hang forever,
> make sure you are setting up proper error handling. In some cases, for
> debugging, this may just mean adding twisted.python.log.err as the errback
> (`from twisted.python import log; d.addErrback(log.err)').
Ya I wasn't setting the error handling and only sometimes they would get caught.
Twisted is a bit of a learning curve, but I do like the way it's put
together and so far it seems like a great product.
More information about the Twisted-Python