def main(): ds = DataService(AppDataHandler) ds.bind(APP_INTERFACE) try: ZMQIOLoop.instance().start() except KeyboardInterrupt: print 'Interrupted'
def main(): ds = DataService(AppDataHandler) ds.bind(APP_INTERFACE) try: ZMQIOLoop.instance().start() except KeyboardInterrupt: print 'Interrupted'
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()
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)
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)
def run(): try: ZMQIOLoop.instance().start() except KeyboardInterrupt: print 'Interrupted'
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()
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()
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()