[Twisted-Python] twisted.internet.task.LoopingCall

Lucas Taylor ltaylor.volks at gmail.com
Thu Jun 4 18:31:15 EDT 2009


On 6/4/09 4:12 PM, Doug Farrell wrote:
> Hi all,
> 
> I'm using the twisted.internet.task.LoopingCall system to run periodic
> tasks in a Twisted server. If I had code like this:
> 
> from twisted.internet.task import LoopingCall
> 
> lp = LoopingCall(someFunction)
> lp.start(5.0)   # run every 5 seconds
> 
> 
> Is there anything in LoopingCall to keep it from trying to run
> someFunction() if the previous call is still running? For instance a
> call to someFunction() takes longer than 5 seconds, will LoopingCall
> hold off or will it call someFuction() anyway causing two 'instances' to
> run?
> 
> Thanks,
> Doug

per
http://twistedmatrix.com/documents/current/api/twisted.internet.task.LoopingCall.html

If someFunction returns a Deferred, it will not be rescheduled if the
Deferred has not fired.

e.g.

def someFunction():
    d = someDeferredReturningOperation()
    d.addCallbacks(success, error)
    return d

lp = LoopingCall(someFunction)
lp.start(5.0)   # run every 5 seconds


Lucas




More information about the Twisted-Python mailing list