rendered paste body def tasks(self): """Produce events until stopped""" self.running = True while self.running: self.update_event.clear() if not len(self.heap): self.update_event.wait() runtime, delay, queue = heappop(self.heap) now = time() if now < runtime: heappush(self.heap, (time() + delay, delay, queue)) self.update_event.wait(runtime - now) else : try : task = queue.get_nowait() except Queue.Empty: pass else : yield task queue.task_done() heappush(self.heap, (time() + delay, delay, queue))