On Aug 17, 2010, at 12:46 AM, Yaroslav Fedevych wrote:

> 
> On Aug 17, 2010, at 8:49 AM, Sergey Magafurov wrote:
> 
>> ... lots of text skipped ...
> 
> You are currently considering your task from the viewpoint “let's make a 
> callback chain for the perfect workflow and alter this chain in case of 
> anything going wrong.” I think the flaw with this approach is that you are 
> trying to make your “ideal” flow work at all in situations where it would, in 
> fact, fail for the most of the time.
> 
> Instead of this, you could try to reconsider the task from the viewpoint of 
> “Let's not add any further callbacks until this is absolutely necessary”. For 
> me, this approach rather works. Moreover, you have the means to do it — a 
> callback can return a Deferred, and so on.

This code doesn't have any tests or documentation, but it's extremely simple, 
and might give you an idea of how to do something like what you want: 
<http://divmod.org/trac/browser/trunk/Epsilon/epsilon/pending.py>.

In this case, it's a multi-deferred in the sense that multiple parties might be 
interested in the initial value of the Deferred; but you could easily create 
something that would, for example, take a function which takes a Deferred and 
adds callbacks to it, then call that function to produce a new callback chain 
each time it happens.

I'm still not completely understanding why you want cancellation to cascade, 
since cancellation effectively _does_ cascade if you just allow 
CancellationError to propagate down the callback chains.

Basically, if you can implement a function in terms of functions that take 
Deferreds, you should really do that, rather than trying to change the way 
Deferred itself works.

Sorry that I wasn't able to understand your reasons for wanting this Deferred 
functionality.  It really sounds like Deferred already does all the stuff you 
want (releasing resources, getting garbage collected, etc) as long as you use 
them correctly, so I don't know what to suggest you do instead.


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to