???????????????????????????????????????????????????????????????????????????????????????????????????????????????log?????????job????????????????????????????? warden.

????????warden????????:

????-python ????????????????????????????????????$????л?????.

????-zeromq ???????????????У??????ú??滹?????????.

????-supervisord ?????????????????????

????-yaml ????????????????????????к?????????PyYAML???????????????????????.

????(????????python???????鷳?zeromq???в??????????windows???????linux??????????????ubuntu.)

????warden??????????

????wardend:???????????????м??????????????stdin???????????????м???socket connect?????????zeromq pub????????????????????????????????.

????sample code:
????class Wardend:

    __sock = None
    __hostname = None

    def __init__(self?? connectInfo):
        self.__hostname = socket.gethostname()
        context = zmq.Context()
        self.__sock = context.socket(zmq.PUB)
        self.__sock.setsockopt(zmq.IDENTITY?? socket.gethostname())
        self.__sock.connect(connectInfo)

    def loop(self):
        while 1:
            msg = sys.stdin.readline()
            zmsg = zlib.compress(msg?? 9)
            self.__sock.send_multipart([self.__hostname?? zmsg])

????warden-aggr:?м???????????????????????????wardend????socket bind????????zeromq sub??????wardend??????????????warden.

????sample code:
class WardenAggr:
  
    __sockpub = None
    __socksub = None

    def __init__(self?? bindRecv?? bindSend):
        context = zmq.Context()

        self.__socksub = context.socket(zmq.SUB)
        self.__socksub.bind(bindRecv)

        self.__socksub.setsockopt(zmq.SUBSCRIBE?? '')
        self.__sockpub = context.socket(zmq.PUB)
        self.__sockpub.bind(bindSend)

    def loop(self):
        while 1:
            self.__sockpub.send_multipart(self.__socksub.recv_multipart())