On Mar 30, 2011, at 11:09 AM, Christopher Armstrong wrote:
> Funny, that's what I got on my proprietary application (0.0597) :-) It's a
> heavily inlineCallbacks-based codebase, and I expect there would be a much
> larger number of addCallback/addErrback calls if it weren't. Also, looking at
> the actual uses of addCallbacks (15), they were all written by people other
> than me (relative Twisted newbies) and I don't think I would have used it
> where it's used now. This, I think, indicates that we *should* focus more on
> addCallback and addErrback in the documentation, and stress that they are
> almost always what you want to use instead of addCallbacks, but definitely
> point out where addCallbacks is useful.
addCallbacks() is used in places where you'd need a try/except/else in
synchronous code; much less frequently than you'd need a try/except, but still
enough that it's important.
However, in my experience, a novice's understanding of addCallbacks() is
critically important to understanding other uses of Deferred as well; in
particular, the "one chain of pairs of callback and errback" concept makes a
lot of the behavior clear which might not otherwise be. If you just vaguely
know about chains of callbacks, you can easily get confused.
Some sample confusion that I believe I've heard over the years: thinking that
addErrback only affects the previously-added callback, that there's only one
errback for the whole chain but as many callbacks as you want, that the
callback and errback chains are totally separate, and callbacks are run, then
errbacks.
Granted, these types of confusion require more than simply glossing over
addCallbacks(), but I do think that emphasizing the pairs-of-callbacks
structure helps people get a full understanding of what's going on more
quickly. Of course, now that I've put this in a publicly-archived mailing list
archive, a lack of understanding of addCallbacks won't be the problem any more.
People will be confused, search for some terms related to this confusion, and
read only that one preceding paragraph of this message, and say to themselves
"oh, that's how Deferred works", somehow holding all of those wrong ideas in
their head at once, forever. Hooray for the internet.
-glyph
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python