[Twisted-Python] Question about deferreds

Doug Farrell dfarrell at mypublisher.com
Thu May 7 14:11:26 MDT 2009


Glyph,

 

Thank you very much for your response, it has provided me with material
that will help me take a big step in my Twisted education.

> 

> Deferreds are not about breaking your work up into steps to save time.

> They're about breaking it up so that different systems can deal with

> the

> same asynchronous event in their own way.

> 

> For example, let's say you're working on a REST client that deals with

> invoices.  The server gives you data at a particular URL and you want

> to

> convert it into an "Invoice" instance.

> 

(snip)

This whole section of your answer really helped me get a handle on a
deferred, well beyond the "promise that a function will have a result
later". J I was thinking kind of monolithically about how to use
deferreds, in that if I was writing everything why would I break it up?
However, the real case is more along the lines of what you said in your
answer; more than likely the eventual total behavior is made up of a
string of smaller behaviors 'glued' together by the deferred. And these
other behaviors would be code generated by others in my group or
libraries.

(snip)

> 

> If you actually wanted to interleave Deferred callbacks like that it

> would be tricky.  But if you just want interleaved callbacks, use

> Cooperator as I mentioned above :).

> 

This reference to the Cooperator really helped me out, I just didn't
know what to look for in the Twisted system to do what I wanted with
co-operating state machines. I did build a little prototype using
deferreds that does provide the behavior I was after, but it was awkward
at best to set up. I felt like there should be something more elegant,
and the Cooperator looks like exactly what I need. I'm going to try and
set up a prototype to experiment with so I understand it more.

 

Again, thanks for your reply and help!

Doug

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20090507/006242b6/attachment.html>


More information about the Twisted-Python mailing list