Пример #1
0
def main():
    ds = DataService(AppDataHandler)
    ds.bind(APP_INTERFACE)
    try:
        ZMQIOLoop.instance().start()
    except KeyboardInterrupt:
        print 'Interrupted'
Пример #2
0
def main():
    ds = DataService(AppDataHandler)
    ds.bind(APP_INTERFACE)
    try:
        ZMQIOLoop.instance().start()
    except KeyboardInterrupt:
        print 'Interrupted'
Пример #3
0
 def on_response(message):
     response = msgpack.unpackb(message[0], use_list=False)
     if response[0] == 'OK':
         self.result = response[1]
     elif response[0] == 'ERR':
         raise Exception(response[2])
     ZMQIOLoop.instance().stop()
Пример #4
0
    def _run(self, request):
        def on_response(message):
            response = msgpack.unpackb(message[0], use_list=False)
            if response[0] == 'OK':
                self.result = response[1]
            elif response[0] == 'ERR':
                raise Exception(response[2])
            ZMQIOLoop.instance().stop()

        self.stream.send(msgpack.packb(request))
        self.stream.on_recv(on_response)
        ZMQIOLoop.instance().start()
        return self.result
    def __init__(self, sftp):
        loop = ZMQIOLoop.instance()

        ctx = zmq.Context.instance()
        sftp_connection_socket = ctx.socket(zmq.REP)
        sftp_connection_socket.bind("tcp://*:4444")
        self.sftp_connection_stream = ZMQStream(sftp_connection_socket, loop)
        self.sftp_connection_stream.on_recv(self._sftp_connection_stream_receive_callback)

        self.sftp_connection_manager = sftp
    def __init__(self, addr="tcp://*:", port=config.GAME_MANAGER_PORT):
        super(GameManagerServer, self).__init__()

        self.context = zmq.Context()
        self.io_loop = ZMQIOLoop.instance()

        self.client_router_sock = self.context.socket(zmq.ROUTER)
        self.address = addr + str(port)
        self.client_router_sock.bind(self.address)

        self.worker_router_sock = self.context.socket(zmq.ROUTER)
        self.worker_router_sock.bind("tcp://*:6000")

        self.client_router_sock = ZMQStream(self.client_router_sock)
        self.client_router_sock.on_recv(self.recv_from_client)

        self.worker_router_sock = ZMQStream(self.worker_router_sock)
        self.worker_router_sock.on_recv(self.recv_from_game)

        self.manager = GameManager(self.send_to_client, self.send_to_game)
    def __init__(self, addr="tcp://*:", port=config.GAME_MANAGER_PORT):
        super(GameManagerServer, self).__init__()

        self.context = zmq.Context()
        self.io_loop = ZMQIOLoop.instance()

        self.client_router_sock = self.context.socket(zmq.ROUTER)
        self.address = addr + str(port)
        self.client_router_sock.bind(self.address)

        self.worker_router_sock = self.context.socket(zmq.ROUTER)
        self.worker_router_sock.bind("tcp://*:6000")

        self.client_router_sock = ZMQStream(self.client_router_sock)
        self.client_router_sock.on_recv(self.recv_from_client)

        self.worker_router_sock = ZMQStream(self.worker_router_sock)
        self.worker_router_sock.on_recv(self.recv_from_game)

        self.manager = GameManager(self.send_to_client, self.send_to_game)
Пример #8
0
def run_message_sequence(filename, heartbeat):
    """Run through a list of scripted messages.

    :param str filename: CSV sequence filename.
    :param bool heartbeat: Send heartbeats every second once connected.

    """
    done = Event()

    with socket() as sock:

        @gen.coroutine
        def send_msg(mtype):
            yield sock.send(get_message_type(mtype)().jsonize())

        @gen.coroutine
        def recv():
            while True:
                incoming = yield sock.recv()
                logger.debug("Received %s" % incoming)

        @gen.coroutine
        def wait_for_connection():
            logger.info("Waiting for connection ")
            incoming = yield sock.recv()
            logger.debug("Received %s", incoming)
            logger.info("Connected!")
            yield send_msg("CONNECTED")

        @gen.coroutine
        def wait_for_start():
            ready = False
            logger.info("Waiting for start message...")
            while not ready:
                incoming = yield sock.recv()
                msg = json.loads(incoming)
                logger.debug("%s", incoming)
                if msg["type"] != "START":
                    continue
                ready = True
                logger.info("Got start")

        @gen.coroutine
        def send_sequence(sequence):
            for entry in sequence:
                logger.info("Delaying for %.3f s...", entry.delay)
                yield gen.sleep(entry.delay)
                jsonized = entry.msg.jsonize()
                logger.info("Sending %s", jsonized)
                sock.send(jsonized)

        @gen.coroutine
        def send_heartbeats():
            if heartbeat:
                logger.info("Sending heartbeats...")
                while not done.is_set():
                    yield send_msg("HEARTBEAT")
                    yield gen.sleep(1)

        @gen.coroutine
        def main():
            sequence = parse_csv_file(filename)
            yield wait_for_connection()
            send_heartbeats()
            # yield wait_for_start()
            recv_future = recv()
            yield send_sequence(sequence)
            yield send_msg("EXIT")
            recv_future.cancel()
            done.set()

        loop = ZMQIOLoop.instance()
        loop.run_sync(main)
Пример #9
0
 def run():
     try:
         ZMQIOLoop.instance().start()
     except KeyboardInterrupt:
         print 'Interrupted'
Пример #10
0
        self._sstream = ZMQStream(self._sub)
        self._sstream.on_recv(self.recv)

    def recv(self, frame):
        app_log.info('MESSAGE:%s', frame)
        # TODO case:写缓存满,先使用nowait方式写,如果捕获Again异常,把内容压入一个deque中,使用on_write来写
        self._inproc_pub.send_multipart(frame)


if __name__ == "__main__":
    # init
    port = 8888
    includes = None
    opts, argvs = getopt.getopt(sys.argv[1:], "c:p:")
    for op, value in opts:
        if op == '-c':
            includes = value
        elif op == '-p':
            port = int(value)
    if not includes:
        includes = os.path.join(ETC_PATH, 'etc.json')
        print "no configuration found!,will use [%s] instead" % includes
    cpff = ConfigParserFromFile()
    includes | up(cpff.parseall) | up(conf_drawer.setup)
    app = Application(
        xsrf_cookies=False
    )
    app.listen(port)
    app_log.info('[{}]starting...'.format(os.getpid()))
    loop.instance().start()
Пример #11
0
from zmq.eventloop.ioloop import ZMQIOLoop

from lib.log import Log


def prepare(conf_file):
    cpff = ConfigParserFromFile()
    conf_file | when(cpff.parseall) | when(conf_drawer.setup)


if __name__ == "__main__":
    includes = None
    opts, argvs = getopt.getopt(sys.argv[1:], "c:h")
    for op, value in opts:
        if op == '-c':
            includes = value
            path._ETC_PATH = os.path.dirname(os.path.abspath(value))
        elif op == '-h':
            print u'''使用参数启动:
                        usage: [-c]
                        -c <file> ******加载配置文件
                   '''
            sys.exit(0)
    if not includes:
        includes = os.path.join(path._ETC_PATH, 'includes_dev.json')
        print "no configuration found!,will use [%s] instead" % includes
    prepare(includes)
    Log.rose_log().info("starting...")
    ZMQIOLoop.instance().start()
Пример #12
0
from zmq.eventloop.ioloop import ZMQIOLoop

from lib.log import Log



def prepare(conf_file):
    cpff = ConfigParserFromFile()
    conf_file | E(cpff.parseall) | E(conf_drawer.setup)


if __name__ == "__main__":
    includes = None
    opts, argvs = getopt.getopt(sys.argv[1:], "c:h")
    for op, value in opts:
        if op == '-c':
            includes = value
            path._ETC_PATH = os.path.dirname(os.path.abspath(value))
        elif op == '-h':
            print u'''使用参数启动:
                        usage: [-c]
                        -c <file> ******加载配置文件
                   '''
            sys.exit(0)
    if not includes:
        includes = os.path.join(path._ETC_PATH, 'includes_dev.json')
        print "no configuration found!,will use [%s] instead" % includes
    prepare(includes)
    Log.rose_log().info("starting...")
    ZMQIOLoop.instance().start()