[Twisted-Python] Re-Occuring Operations

Clark C. Evans cce at clarkevans.com
Sun Mar 16 23:42:17 MST 2003


Hello.   I was wondering if there is anything which handles 
re-occuring functions; that is, an auto-rescheduler or
something of that nature.   Here is what I came up with,
I'm sure there is a shorter 'lambda' form, but I was
going for clarity here.


  class MultiRun:
      """ apply a callable while it returns true """
      def __init__(self, callable, waitInterval = 0):
          self.callable = callable
          self.waitInterval = waitInterval
          self.iterate(starting = 1)
      def iterate(self, starting = 0):
          if starting or self.callable():
              from twisted.internet import reactor
              reactor.callLater(self.waitInterval, self.iterate)


Something like this would be useful, it's already emerged in
two different contexts in my code:

   (a) a background operation (which never returns true)
       that runs every 5 minutes, 

   (b) an operation which keeps pooling a resource, if 
       the resource is busy it returns true, otherwise 
       it processes the resource and returns false to
       signal that it is done

Perhaps calling this an "Operation" would be good.

Best,

clark




More information about the Twisted-Python mailing list