[Twisted-Python] Updated defer.html
    Bob Ippolito 
    bob at redivi.com
       
    Mon Mar 10 21:36:30 EST 2003
    
    
  
On Monday, Mar 10, 2003, at 17:18 America/New_York, Glyph Lefkowitz 
wrote:
> On Monday, March 10, 2003, at 11:34 AM, Clark C. Evans wrote:
>
>> BTW, is there anyway to ask the reactor to run it's current 'queue'
>> and then _stop_ when it's idle.  in other words, I'd like
>> something like:
>>
>>    reactor.run(daemon=0)  # only runs currently queued stuff
>
> If the OS would do something sensible like give us a queue of events 
> to run, we could do that.  However, the reactor already goes through a 
> few contortions to create the illusion that something like that is 
> happening in the background; it is difficult to deterministically say 
> what the "current queue" is, especially given the surprising behavior 
> of certain modules like HTTP, which register infinitely recurring 
> timers.
Well, the simple solution is just to make a DeferredList with all of 
your "high level tasks".  When that DeferredList completes, do a 
reactor.stop().
On a somewhat related note, something that might be of some utility is 
to have some sort of "deferred callback wrapper" for callback or 
errback that allows you to make callbacks that don't expect a result or 
to integrate into the deferred callback chain.  It's something that 
happens pretty often I think?  It'd be a really simple construction:
class Passthrough:
	def __init__(self, fn):
		self.fn = fn
	def __call__(self, result, *args, **kwargs):
		self.fn(*args, **kwargs)
		return result
Is something like that worthy of sitting in defer.py ?
-bob
    
    
More information about the Twisted-Python
mailing list