Example #1
0
def run_tango_server(tango_util=None, start_time=None):
    try:
        if tango_util is None:
            tango_util = Util(sys.argv)
        util = Util.instance()
        SardanaServer.server_state = State.Init
        util.server_init()
        SardanaServer.server_state = State.Running
        if start_time is not None:
            import datetime
            dt = datetime.datetime.now() - start_time
            taurus.info("Ready to accept request in %s", dt)
        else:
            taurus.info("Ready to accept request")
        util.server_run()
        SardanaServer.server_state = State.Off
        taurus.info("Exiting")
    except DevFailed:
        taurus.info("Exiting")
        taurus.critical("Server exited with DevFailed", exc_info=1)
    except KeyboardInterrupt:
        taurus.info("Exiting")
        taurus.critical("Interrupted by keyboard")
    except Exception:
        taurus.info("Exiting")
        taurus.critical("Server exited with unforeseen exception", exc_info=1)
    taurus.info("Exited")
Example #2
0
def run_tango_server(tango_util=None, start_time=None):
    # Import here to avoid circular import
    from sardana.tango.core.SardanaDevice import SardanaDevice

    try:
        if tango_util is None:
            tango_util = Util(sys.argv)
        util = Util.instance()
        SardanaServer.server_state = State.Init
        util.server_init()

        for device in util.get_device_list("*"):
            if isinstance(device, SardanaDevice):
                device.sardana_init_hook()

        SardanaServer.server_state = State.Running
        if start_time is not None:
            import datetime
            dt = datetime.datetime.now() - start_time
            taurus.info("Ready to accept request in %s", dt)
        else:
            taurus.info("Ready to accept request")
        util.server_run()
        SardanaServer.server_state = State.Off
        taurus.info("Exiting")
    except DevFailed:
        taurus.info("Exiting")
        taurus.critical("Server exited with DevFailed", exc_info=1)
    except KeyboardInterrupt:
        taurus.info("Exiting")
        taurus.critical("Interrupted by keyboard")
    except Exception:
        taurus.info("Exiting")
        taurus.critical("Server exited with unforeseen exception", exc_info=1)
    taurus.info("Exited")
Example #3
0
def run(args=None):
    try:
        if not args:
            args = sys.argv[1:]
            args = [SERVER_NAME] + list(args)

        print 'running server with args: %s' % repr(args)
        util = Util(args)
        util.add_class(WebTornadoDS, WebTornadoDS4Impl)
        U = Util.instance()
        U.server_init()
        U.server_run()

    except DevFailed, e:
        print '-------> Received a DevFailed exception:', e
Example #4
0
def run(prepare_func,
        args=None,
        tango_util=None,
        start_time=None,
        mode=None,
        name=None):

    if mode is None:
        mode = ServerRunMode.SynchPure

    if args is None:
        if mode != ServerRunMode.SynchPure:
            raise Exception("When running in separate thread/process, "
                            "'args' must be given")
        args = sys.argv

    if name is None:
        name = args[0]
    else:
        args = [name] + list(args[1:])

    if mode != ServerRunMode.SynchPure:
        if mode in (ServerRunMode.SynchThread, ServerRunMode.AsynchThread):
            import threading

            class task_klass(threading.Thread):
                def terminate(self):
                    if not self.is_alive():
                        return
                    Util.instance().get_dserver_device().kill()
        else:
            import multiprocessing
            task_klass = multiprocessing.Process
            tango_util = None

        task_args = prepare_func,
        task_kwargs = dict(args=args,
                           tango_util=tango_util,
                           start_time=start_time,
                           mode=ServerRunMode.SynchPure)

        task = task_klass(name=name,
                          target=run,
                          args=task_args,
                          kwargs=task_kwargs)
        task.daemon = False
        task.start()
        if mode in (ServerRunMode.SynchThread, ServerRunMode.SynchProcess):
            task.join()
        return task

    log_messages = []
    try:
        options, args, tango_args, ORB_args = prepare_cmdline(args=args)
    except KeyboardInterrupt:
        pass

    log_messages.extend(prepare_environment(args, tango_args, ORB_args))
    log_messages.extend(prepare_server(args, tango_args))

    if tango_util is None:
        tango_util = Util(tango_args)

    prepare_func(tango_util)
    prepare_taurus(options, args, tango_args)
    prepare_logging(options,
                    args,
                    tango_args,
                    start_time=start_time,
                    log_messages=log_messages)
    prepare_rconsole(options, args, tango_args)

    run_tango_server(tango_util, start_time=start_time)
Example #5
0
        options, args, tango_args, ORB_args = prepare_cmdline(args=args)
    except KeyboardInterrupt:
        pass

    log_messages.extend(prepare_environment(args, tango_args, ORB_args))

    try:
        log_messages.extend(prepare_server(args, tango_args))
    except AbortException, e:
        print e.message
        return
    except KeyboardInterrupt:
        print("\nInterrupted by keyboard")
        return

    log_messages.extend(prepare_logstash(args))

    if tango_util is None:
        tango_util = Util(tango_args)

    prepare_func(tango_util)
    prepare_taurus(options, args, tango_args)
    prepare_logging(options,
                    args,
                    tango_args,
                    start_time=start_time,
                    log_messages=log_messages)
    prepare_rconsole(options, args, tango_args)

    run_tango_server(tango_util, start_time=start_time)