示例#1
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    atexit.register(loop.close)
    signal_handler = SignalHandler()
    signal_handler.setup()
    atexit.register(signal_handler.teardown)

    writer = DBWriter(args.baseurl_db,
                      args.user_db, args.password_db,
                      args.database, args.table)
    writer.start()
    atexit_register_coroutine(writer.stop)

    filter = Filter(args.pattern_file)
    rpc_server = Server({"influxdb_filter": filter}, builtin_terminate=True)
    loop.run_until_complete(rpc_server.start(common_args.bind_address_from_args(args),
                                             args.port_control))
    atexit_register_coroutine(rpc_server.stop)

    reader = MasterReader(args.server_master, args.port_master,
                          args.retry_master, filter._filter, writer)
    reader.start()
    atexit_register_coroutine(reader.stop)

    _, pending = loop.run_until_complete(asyncio.wait(
        [signal_handler.wait_terminate(), rpc_server.wait_terminate()],
        return_when=asyncio.FIRST_COMPLETED))
    for task in pending:
        task.cancel()
示例#2
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        signal_handler = SignalHandler()
        signal_handler.setup()
        try:
            get_logs_task = asyncio.ensure_future(
                get_logs_sim(args.core_addr) if args.simulation else get_logs(args.core_addr))
            try:
                server = Server({"corelog": PingTarget()}, None, True)
                loop.run_until_complete(server.start(common_args.bind_address_from_args(args), args.port))
                try:
                    _, pending = loop.run_until_complete(asyncio.wait(
                        [signal_handler.wait_terminate(),
                         server.wait_terminate(),
                         get_logs_task],
                        return_when=asyncio.FIRST_COMPLETED))
                    for task in pending:
                        task.cancel()
                finally:
                    loop.run_until_complete(server.stop())
            finally:
                pass
        finally:
            signal_handler.teardown()
    finally:
        loop.close()
示例#3
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    loop = asyncio.get_event_loop()
    atexit.register(loop.close)

    writer = DBWriter(args.baseurl_db, args.user_db, args.password_db,
                      args.database, args.table)
    writer.start()
    atexit_register_coroutine(writer.stop)

    log = Log(writer)

    server = Logger()
    rpc_server = Server({"schedule_logger": server}, builtin_terminate=True)
    loop.run_until_complete(
        rpc_server.start(common_args.bind_address_from_args(args),
                         args.port_control))
    atexit_register_coroutine(rpc_server.stop)

    reader = MasterReader(args.server_master, args.port_master,
                          args.retry_master, log)
    reader.start()
    atexit_register_coroutine(reader.stop)

    loop.run_until_complete(rpc_server.wait_terminate())
示例#4
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    loop = asyncio.get_event_loop()
    try:
        get_logs_task = asyncio.ensure_future(
            get_logs_sim(args.core_addr) if args.
            simulation else get_logs(args.core_addr))
        try:
            server = Server({"corelog": PingTarget()}, None, True)
            loop.run_until_complete(
                server.start(common_args.bind_address_from_args(args),
                             args.port))
            try:
                loop.run_until_complete(server.wait_terminate())
            finally:
                loop.run_until_complete(server.stop())
        finally:
            get_logs_task.cancel()
            try:
                loop.run_until_complete(get_logs_task)
            except asyncio.CancelledError:
                pass
    finally:
        loop.close()
示例#5
0
 async def run():
     with await Shutter.connect(args.device, loop=loop) as dev:
         server = Server({"ptb_shutter": dev}, None, True)
         await server.start(bind_address_from_args(args), args.port)
         try:
             await server.wait_terminate()
         finally:
             await server.stop()
示例#6
0
 async def run():
     async with RPCClient(NetworkConnection(args.device, loop=loop)) as dev:
         server = Server({"laser": dev}, None, True)
         await server.start(common_args.bind_address_from_args(args), args.port)
         try:
             await server.wait_terminate()
         finally:
             await server.stop()
 def connect_asyncio_server(self):
     self.loop = asyncio.get_event_loop()
     self.asyncio_server = Server(
         {
             "pulse_sequence_visualizer":
             PulseSequenceVisualizerServer(self),
             "simulation_logger": simulation_logger
         }, None, True)
     self.task = self.loop.create_task(
         self.asyncio_server.start("::1", 3289))
示例#8
0
 async def run():
     await dev.connect(args.uri, user=args.user, password=args.password)
     await dev.misc()
     server = Server({"oors": dev}, None, True)
     await server.start(bind_address_from_args(args), args.port)
     try:
         await server.wait_terminate()
     except KeyboardInterrupt:
         pass
     finally:
         await server.stop()
示例#9
0
 async def run():
     with await Wavemeter.connect(args.device,
                                  port=args.device_port,
                                  loop=loop) as dev:
         # only wavemeter
         # logger.debug("connected, version %s", await dev.get_version())
         server = Server({"wavemeter": dev}, None, True)
         await server.start(common_args.bind_address_from_args(args),
                            args.port)
         try:
             await server.wait_terminate()
         finally:
             await server.stop()
示例#10
0
def main():
    args = get_argparser().parse_args()

    root_logger = logging.getLogger()
    root_logger.setLevel(logging.NOTSET)
    source_adder = SourceFilter(logging.WARNING +
                                args.quiet*10 - args.verbose*10,
                                "ctlmgr({})".format(platform.node()))
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(logging.Formatter(
        "%(levelname)s:%(source)s:%(name)s:%(message)s"))
    console_handler.addFilter(source_adder)
    root_logger.addHandler(console_handler)

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    atexit.register(loop.close)
    signal_handler = SignalHandler()
    signal_handler.setup()
    atexit.register(signal_handler.teardown)

    logfwd = LogForwarder(args.server, args.port_logging,
                          args.retry_master)
    logfwd.addFilter(source_adder)
    root_logger.addHandler(logfwd)
    logfwd.start()
    atexit_register_coroutine(logfwd.stop)

    ctlmgr = ControllerManager(args.server, args.port_notify,
                               args.retry_master, args.host_filter)
    ctlmgr.start()
    atexit_register_coroutine(ctlmgr.stop)

    class CtlMgrRPC:
        retry_now = ctlmgr.retry_now

    rpc_target = CtlMgrRPC()
    rpc_server = Server({"ctlmgr": rpc_target}, builtin_terminate=True)
    loop.run_until_complete(rpc_server.start(common_args.bind_address_from_args(args),
                                             args.port_control))
    atexit_register_coroutine(rpc_server.stop)

    _, pending = loop.run_until_complete(asyncio.wait(
        [signal_handler.wait_terminate(), rpc_server.wait_terminate()],
        return_when=asyncio.FIRST_COMPLETED))
    for task in pending:
        task.cancel()
示例#11
0
def main():
    args = get_argparser().parse_args()

    root_logger = logging.getLogger()
    root_logger.setLevel(logging.NOTSET)
    source_adder = SourceFilter(logging.WARNING +
                                args.quiet*10 - args.verbose*10,
                                "ctlmgr({})".format(platform.node()))
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(logging.Formatter(
        "%(levelname)s:%(source)s:%(name)s:%(message)s"))
    console_handler.addFilter(source_adder)
    root_logger.addHandler(console_handler)

    if os.name == "nt":
        loop = asyncio.ProactorEventLoop()
        asyncio.set_event_loop(loop)
    else:
        loop = asyncio.get_event_loop()
    atexit.register(loop.close)

    logfwd = LogForwarder(args.server, args.port_logging,
                          args.retry_master)
    logfwd.addFilter(source_adder)
    root_logger.addHandler(logfwd)
    logfwd.start()
    atexit_register_coroutine(logfwd.stop)

    ctlmgr = ControllerManager(args.server, args.port_notify,
                               args.retry_master)
    ctlmgr.start()
    atexit_register_coroutine(ctlmgr.stop)

    class CtlMgrRPC:
        retry_now = ctlmgr.retry_now

    rpc_target = CtlMgrRPC()
    rpc_server = Server({"ctlmgr": rpc_target}, builtin_terminate=True)
    loop.run_until_complete(rpc_server.start(common_args.bind_address_from_args(args),
                                             args.port_control))
    atexit_register_coroutine(rpc_server.stop)

    loop.run_until_complete(rpc_server.wait_terminate())
示例#12
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    bind_address = common_args.bind_address_from_args(args)

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        signal_handler = SignalHandler()
        signal_handler.setup()
        try:
            monitor_mux = MonitorMux()
            comm_moninj = CommMonInj(monitor_mux.monitor_cb,
                                     monitor_mux.injection_status_cb,
                                     monitor_mux.disconnect_cb)
            monitor_mux.comm_moninj = comm_moninj
            loop.run_until_complete(comm_moninj.connect(args.core_addr))
            try:
                proxy_server = ProxyServer(monitor_mux)
                loop.run_until_complete(proxy_server.start(bind_address, args.port_proxy))
                try:
                    server = Server({"moninj_proxy": PingTarget()}, None, True)
                    loop.run_until_complete(server.start(bind_address, args.port_control))
                    try:
                        _, pending = loop.run_until_complete(asyncio.wait(
                            [signal_handler.wait_terminate(),
                             server.wait_terminate(),
                             comm_moninj.wait_terminate()],
                            return_when=asyncio.FIRST_COMPLETED))
                        for task in pending:
                            task.cancel()
                    finally:
                        loop.run_until_complete(server.stop())
                finally:
                    loop.run_until_complete(proxy_server.stop())
            finally:
                loop.run_until_complete(comm_moninj.close())
        finally:
            signal_handler.teardown()
    finally:
        loop.close()
示例#13
0
 def connect_server(self):
     self.loop = asyncio.get_event_loop()
     self.server = Server({"rcg": self.RemotePlotting(self.rcg)}, None,
                          True)
     self.task = self.loop.create_task(
         self.server.start(conf.host, conf.port))
示例#14
0
 def connect_asyncio_server(self):
     self.loop = asyncio.get_event_loop()
     self.asyncio_server = Server(
         {"pmt_histogram": self.RemotePlotting(self)}, None, True)
     self.task = self.loop.create_task(
         self.asyncio_server.start("::1", 3287))
示例#15
0
 def connect_asyncio_server(self):
     self.loop = asyncio.get_event_loop()
     self.asyncio_server = Server(
         {"camera_reference_image": self.RemotePlotting(self)}, None, True)
     self.task = self.loop.create_task(
         self.asyncio_server.start("::1", 3288))
示例#16
0
 async def do_test(self):
     server = Server({"target": Target()})
     await server.start("::1", 7777)
     await self.check_value()
     await server.stop()
    def main(extra_args=None):
        logging.getLogger(name).info("Launching controller %s", name)

        def get_argparser():
            parser = argparse.ArgumentParser(
                description="Generic controller for {}".format(name))
            group = parser.add_argument_group(name)
            group.add_argument(
                "--id",
                required=True,
                type=str,
                help=
                "VISA id to connect to. This Controller will obtain an exclusive lock.",
            )
            group.add_argument(
                "--simulation",
                action="store_true",
                help=
                "Run this controller in simulation mode. ID will be ignored but is still required.",
            )
            common_args.simple_network_args(parser, default_port)
            common_args.verbosity_args(parser)

            return parser

        args = get_argparser().parse_args(extra_args)
        common_args.init_logger_from_args(args)

        driver_obj = driver_class(None,
                                  id=args.id,
                                  simulation=args.simulation,
                                  **driver_kwargs)

        loop = asyncio.get_event_loop()

        # Start an ARTIQ server for this device.
        #
        # Allow parallel connections so that functions which don't touch the
        # serial device can be done simultaneously: functions which do are
        # protected by @with_lock.
        server = Server(
            {name: driver_obj},
            description="An automatically generated server for {}".format(
                driver_class.__name__),
            builtin_terminate=True,
            allow_parallel=True,
        )

        loop.run_until_complete(
            server.start(
                host=common_args.bind_address_from_args(args),
                port=args.port,
            ))

        try:
            loop.run_until_complete(server.wait_terminate())
        finally:
            try:
                loop.run_until_complete(server.stop())
            finally:
                # Close the VISA connection after the server has shutdown
                driver_obj.close()

            loop.close()