class TEnqueingService(service.Service, RedisMixin): def __init__(self, queue_name, sleep_time): self.queue = Queue(name=queue_name) self.sleep_time = sleep_time self.stopped = False self.enqueued = 0 self.last_time = time() self.last_processed = 0 def callback_enqueue(self, data): self.enqueued+=1 if self.enqueued%1000 == 0: self.last_time, self.last_processed = print_stats(self.enqueued, 'Enqueued jobs', self.last_time, self.last_processed) def enqueue(self): try: d = self.queue.enqueue_call(func=example_func, args=(self.enqueued,)) d.addCallback(self.callback_enqueue) except Exception as e: log.msg('Exception enqueing:', e) raise finally: if not self.stopped: reactor.callLater(self.sleep_time, self.enqueue) def startService(self): reactor.callLater(1, self.enqueue) service.Service.startService(self) def stopService(self): service.Service.stopService(self) self.stopped = True
def enqueue(self): try: queue = Queue() yield queue.enqueue_call(func=example_func, args=(self.processed,)) self.processed+=1 #log.msg('Enqueued:', res) except Exception as e: log.msg('Exception enqueing:', e) raise finally: if not self.stopped: reactor.callLater(0.001, self.enqueue)