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)
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 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.'))
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.'))
def get_server_conf(content): server_conf = ServerConf.Instance() if content != None: server_conf.load_data(content) return server_conf