On 3/22/11 2:30 AM, Jasper St. Pierre wrote: > On IRC, exarkun, glyph, spiv and idnar encouraged me to do a bit of > work on the Defer documentation. I kept get confused between the > things like returning a Deferred from a callback and chainDeferred, > which I found out wasn't that useful: > > <idnar> I suppose it's useful for "forking" a deferred > <idnar> you have an "existing" deferred > <idnar> and you want a "new" deferred that starts with the value from > the end of the existing deferred's callback chain > <idnar> but you don't want the rest of the existing deferred's > callback chain to be affected by the new deferred's callback chain > <idnar> that's still not really a use case though, just a description > of the situation that must arise in the use case > <idnar> I guess I should search for actual uses of chainDeferred > > Well, I was getting frustrated myself, and I suggested to fix the docs > once and for all. People pointed me to three documents, all of which > felt way too dense for me: > > http://twistedmatrix.com/documents/current/core/howto/defer.html > http://twistedmatrix.com/documents/current/core/howto/gendefer.html > http://twistedmatrix.com/documents/current/core/howto/deferredindepth.html > > Jessica also pointed me to http://twistedmatrix.com/trac/ticket/3943, > which admittedly I haven't read yet. > > So, I started writing. I opened up a session of emacs, and produced two > things: > > http://magcius.mecheye.net/twisted/DeferHowTo-Rewrite.html > http://magcius.mecheye.net/twisted/DeferHowTo-Fixup.html > > Sources: > > http://magcius.mecheye.net/twisted/DeferHowTo-Rewrite.rst > http://magcius.mecheye.net/twisted/DeferHowTo-Fixup.lore > > The former is a tutorial that I tried to make informal as possible, > and the latter is a fixup and rewrite of defer.xhtml stuff to make it > a bit less, uh, dense. > > My eventual goal is to reduce the number of documentation about defer > down to a near-impossible two documents. I'm hoping to merge some of > the good stuff of the other thousands of documents. > > Thoughts so far? > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
Thank you for tackling the impossible. I remember when reading the old docs the first time that one thing bothered me most and this was 'if I get a deferred back, then I'm kind of responsible for that beast' so what do I do with it besides adding call/errbacks'? I had a hard time and quite a few hours with the debugger to figure out the life cycle of a deferred. I also read gendefer.html over and over again while trying to figure out the relation of a deferred to the reactor, because somehow it must be that reactor.run() loop which in the end triggers either call- or errbacks. This might be typical questions from someone who grew up without garbage collection. My problem is, that for coding in a confident way I have to have a grasp of the innards of the system. Summed up - How does the life cycle of a deferred look like? - Who is responsible for a deferred? - If deferreds are related to the reactor, then how are they related? Reading your two docs answers those questions I had back then, definitely an improvement. Minor glitches: link to node.js is >> http://nodejs.org/ Thanks again, Werner _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python