示例#1
0
class Master(dict):
    """
    task management and scheduling
    """

    def __init__(self, params_obj: ParamsParser):
        super(Master, self).__init__()
        self._params_obj = params_obj
        self.logger = TaskLogger(self._params_obj.out_dir, 'MAIN-APP').get_logger('Master')
        self._work_dir = self._params_obj.out_dir
        self.server = None
        self.endpoint = 'tcp://{}:{:.0f}'.format(SERVER_HOST, SERVER_PORT)
        self.main_process = os.getpid()

    @property
    def work_dir(self):
        return self._work_dir

    def parser_params(self):
        tmp_dic = defaultdict(list)
        with open(self._params_obj.cmd_conf) as in_handler:
            for name, cpu, mem, relys, cmd in csv.reader(in_handler, delimiter='\t'):
                if name in self:
                    self.logger.error('the cmd name must not be repeated [%s is repeated]' % name)
                    raise KeyError('the cmd name must not be repeated [%s is repeated]' % name)
                self[name] = Agent(worker_id=name, cmd=cmd, master=self, cpu=cpu, mem=mem)
                relys = [i.strip() for i in relys.strip().split(',') if i]
                tmp_dic[name].extend(relys)
            for k, vs in tmp_dic.items():
                if len(vs) == 0:
                    continue
                # async_result = event.AsyncResult()
                k_agent = self[k]
                vs_agents = [self[i] for i in vs]
                # k_agent.add_relys(async_result)
                k_agent.add_relys(*vs_agents)
                # for v_agent in vs_agents:
                #     v_agent.add_relied(async_result)

    def stop(self):
        self.server.close()

    def run(self):
        self.logger.info('Main APP start: [PID %s]' % self.main_process)
        self.server = Server(bind_obj=ServerWorker(self))
        self.logger.info('Server start')
        self.server.start()
        self.parser_params()
        agents = self.values()
        # start all agent
        self.logger.info('Worker Agent start')
        _ = [agent.start() for agent in agents]
        self.logger.info('Agent Monitor start')
        monitor = AgentMonitor(self)
        joinall(agents)
        for agent in agents:
            agent.get_end_signal()
        monitor.is_end = True
        self.logger.info('all workers were completed')
        self.logger.info('Main APP stop: [PID %s]' % self.main_process)
示例#2
0
class Feluda:
    def __init__(self, configPath):
        self.config = config.load(configPath)
        if self.config.operators:
            self.operators = Operator(self.config.operators)
        if self.config.store:
            self.store = store.get_store(self.config.store)
        if self.config.queue:
            # print("---> 1", self.config.queue)
            self.queue = Queue.make(self.config.queue)
        if self.config.server:
            self.server = Server(self.config.server)

    def set_endpoints(self, endpoints):
        if self.server:
            for endpoint in endpoints:
                self.server.add_endpoint(endpoint(self))

            self.server.enable_endpoints()
        else:
            raise Exception("Server is not Configured")

    def start(self):
        if self.store:
            self.store.connect()
            self.store.optionally_create_index()

        if self.queue:
            self.queue.connect()

        if self.server:
            self.server.start()

    def start_component(self, component_type: ComponentType):
        if component_type == ComponentType.SERVER and self.server:
            self.server.start()
        elif component_type == ComponentType.STORE and self.store:
            self.store.connect()
            self.store.optionally_create_index()
        elif component_type == ComponentType.QUEUE and self.queue:
            self.queue.connect()
            self.queue.initialize()
        else:
            raise Exception("Unsupported Component Type")

    def get_state(self):
        pass
示例#3
0
import webbrowser
from core.server import Server

HOST = "localhost"
PORT = 8081
server = Server(HOST, PORT)
webbrowser.open("http://{}:{}".format(HOST, PORT))
server.start()
示例#4
0
	def start_server(self):
		#self.__load_ssl__()	
		server = Server();
		server.start();