示例#1
0
文件: zqueue.py 项目: amitu/dutils
 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)
示例#2
0
文件: zqueue.py 项目: amitu/dutils
 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))
示例#3
0
文件: zidgen.py 项目: amitu/dutils
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()
示例#4
0
文件: zqueue.py 项目: amitu/dutils
            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