コード例 #1
0
class Server():
    def __init__(self, server_port, monitor_port, daemon_process, param=None,
                 max_process=3, process_time_out=-1, server_name=None):
        """
        @param server_port: running server port
        @param monitor_port: process moniter port
        @param daemon_process: running process module
        @param param: parameter use at daemon_process
        @param max_process: number of simutaneously runing process
        @prarm process_time_out: number of process time out
               (process의 join parameter로 사용)
               < 0: (Default) when ending until
               = 0: not join
               > 0: wait time
               WARNING -todo...-
        @param server_name: monitmoniter에 표시할 server이름
               None: (Default) daemon_process에서 class이름을 확인하여 사용
        """

        #Use ManagerServer
        self.daemon_process = daemon_process
        self.socket_queue = Queue.Queue()
        self.param = param

        #Use MoniterServer
        self.monitor_dic = multiprocessing.Manager().dict()

        if server_name is None:
            server_name = daemon_process.__name__

        #Setup Server Conf
        self.conf = ServerConf(server_port, monitor_port,
                               server_name, max_process, process_time_out)

    def run(self):
        #start monitor
        if self.conf.get_monitor_port() != 0:
            monitor_server = MoniterServer(self.conf, self.monitor_dic, self.socket_queue)
            monitor_server.setDaemon(True)
            monitor_server.start()

        #start process manager
        manager_server = ManagerServer(self.conf, self.socket_queue, self.monitor_dic,
                                       self.daemon_process, self.param)
        manager_server.setDaemon(True)
        manager_server.start()

        self.sock = Socket.Socket()
        self.sock.Bind(self.conf.get_server_port())
        while True:
            client_sock = self.sock.Accept()
            if not client_sock:
                break

            print 'put', time.time()
            self.socket_queue.put(client_sock)
コード例 #2
0
    def __init__(self, server_port, monitor_port, daemon_process, param=None,
                 max_process=3, process_time_out=-1, server_name=None):
        """
        @param server_port: running server port
        @param monitor_port: process moniter port
        @param daemon_process: running process module
        @param param: parameter use at daemon_process
        @param max_process: number of simutaneously runing process
        @prarm process_time_out: number of process time out
               (process의 join parameter로 사용)
               < 0: (Default) when ending until
               = 0: not join
               > 0: wait time
               WARNING -todo...-
        @param server_name: monitmoniter에 표시할 server이름
               None: (Default) daemon_process에서 class이름을 확인하여 사용
        """

        #Use ManagerServer
        self.daemon_process = daemon_process
        self.socket_queue = Queue.Queue()
        self.param = param

        #Use MoniterServer
        self.monitor_dic = multiprocessing.Manager().dict()

        if server_name is None:
            server_name = daemon_process.__name__

        #Setup Server Conf
        self.conf = ServerConf(server_port, monitor_port,
                               server_name, max_process, process_time_out)
コード例 #3
0
ファイル: __init__.py プロジェクト: alfem/gecos-firstboot
def get_server_conf(url):

    is_cached = json_is_cached()

    try:
        if is_cached:
            fp = open(__JSON_CACHE__, 'r')

        else:
            try:
                url = parse_url(url)
                user, password = validate_credentials(url)
                fp = urllib2.urlopen(url, timeout=__URLOPEN_TIMEOUT__)

            except urllib2.URLError as e:
                if hasattr(e, 'code') and e.code == 401:
                    user, password = validate_credentials(url)
                    fp = urllib2.urlopen(url, timeout=__URLOPEN_TIMEOUT__)

                else:
                    raise e

            fp_cached = open(__JSON_CACHE__, 'w')
            for line in fp:
                fp_cached.write(line)

            fp_cached.close()
            fp.close()
            fp = open(__JSON_CACHE__, 'r')

        content = fp.read()
        fp.close()
        conf = json.loads(content)

        server_conf = ServerConf()
        server_conf.load_data(conf)
        return server_conf

    except urllib2.URLError as e:
        raise ServerConfException(e)

    except ValueError as e:
        raise ServerConfException(_('Configuration file is not valid.'))
コード例 #4
0
ファイル: __init__.py プロジェクト: rcmorano/gecos-firstboot
def get_server_conf(url):

    try:
        user = ''
        password = ''

        try:
            url = parse_url(url)
            fp = urllib2.urlopen(url, timeout=__URLOPEN_TIMEOUT__)

        except urllib2.URLError as e:
            if hasattr(e, 'code') and e.code == 401:
                user, password = auth_dialog()
                _install_opener(url, user, password)
                fp = urllib2.urlopen(url, timeout=__URLOPEN_TIMEOUT__)

            else:
                raise e

        content = fp.read()
        conf = json.loads(content)

        if 'version' in conf:
            version = conf['version']
            if version != __CONFIG_FILE_VERSION__:
                raise Exception(_('Incorrect version of the configuration file.'))

            server_conf = ServerConf()
            server_conf.load_data(conf)
            return server_conf

        else:
            raise ValueError()

    except urllib2.URLError as e:
        raise ServerConfException(e)

    except ValueError as e:
        raise ServerConfException(_('Configuration file is not valid.'))
コード例 #5
0
def get_server_conf(content):
    server_conf = ServerConf.Instance()
    if content != None:
        server_conf.load_data(content)
    return server_conf