def run(self): reset_query = query_maker(bind=ZQUEQUE_BIND) while True: item = self.items_to_reset.get() self.items_to_reset.task_done() if item == "Resetter.Shutdown": log("Resetter.run: shutting down") break log("Resetter.run: resetting %s" % item) reset_query(item)
def run(self): q = query_maker(bind=self.bind) while True: msg = q("%s:get" % self.namespace) print "ZQueueConsumer:run", msg if msg == "ZQueue.Shutdown": continue item_id, item = msg self.process(item) q("%s:delete:%s" % (self.namespace, item_id))
ZIDGEN_BIND = "tcp://127.0.0.1:7978" ZIDGEN_DBFILE = "./zidgen.bdb" class ZIDGenerator(ZReplier): def thread_init(self): super(ZIDGenerator, self).thread_init() self.db = bsddb.hashopen(ZIDGEN_DBFILE) if not "id" in self.db: self.db["id"] = "0" print "ZIDGenerator initialized with %s, initial id: %s." % ( ZIDGEN_DBFILE, self.db["id"] ) def get_id(self): cid = long(self.db["id"]) cid += 1 cid = str(cid) self.db["id"] = cid return cid def reply(self, arguments): if arguments == "get": return self.get_id() return super(ZIDGenerator, self).reply(arguments) query = query_maker(bind=ZIDGEN_BIND) if __name__ == "__main__": ZIDGenerator(ZIDGEN_BIND).loop()
send_multi(self.socket, [sender, ZNull, "ack"]) else: log("Unknown command: %s" % command) send_multi(self.socket, [sender, ZNull, "Unknown command: %s" % command]) def thread_quit(self): for namespaced_queue in self.qm.qs.values(): while not namespaced_queue.gq.is_empty(): send_multi(self.socket, [namespaced_queue.gq.pop_getter(), ZNull, "ZQueue.Shutdown"]) self.qm.resetter.shutdown() super(ZQueue, self).thread_quit() # }}} query = query_maker(bind=ZQUEQUE_BIND) # ZQueueConsumer # {{{ class ZQueueConsumer(threading.Thread): def __init__(self, bind, namespace): super(ZQueueConsumer, self).__init__() self.daemon = True self.namespace = namespace self.bind = bind self.start() print "ZQueueConsumer for", namespace def process(self, item): pass