David wrote:
Has anyone run into a similar problem (and solved it) ?

Yeah, here is my implementation as a perpetual timer based some cherrypy code and threading timer.

import threading

class PerpetualTimer(threading._Timer):
    """A subclass of threading._Timer whose run() method repeats.

    Based on cherrpy.process.plugins.PerpetualTimer
    """
def __init__(self, interval, function, name=None, daemon=False, args=(), kwargs={}): super(PerpetualTimer, self).__init__(interval, function, args, kwargs)
        self.setName(name)
        self.setDaemon(daemon)

    def run(self):
        while True:
            self.finished.wait(self.interval)
            if self.finished.isSet():
                return
            self.function(*self.args, **self.kwargs)

    def stop(self, timeout=None):
        self.cancel()
        self.join(timeout)

def callback(egg):
    egg.cook()

timer = PerpetualTimer(100, callback, name="EggTimer", args=(somegg,))
timer.start()

...

timer.stop()

Christian
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to