reads box configuration and start/kill processes. performs process monitoring

def manage_process(self, *args):
        """ reads box configuration and start/kill processes. performs process monitoring """
        process_name = args[0]
        try:
            box_config = self.bc_dao.get_one([self.box_id, process_name])
            if not box_config.is_on:
                if box_config.pid is not None:
                    self._kill_process(box_config)
                return

            if not box_config.pid or not psutil.pid_exists(box_config.pid):
                self._start_process(box_config)
            elif box_config.pid and psutil.pid_exists(box_config.pid):
                self._poll_process(box_config)
        except Exception as e:
            self.logger.error('Exception: {0}'.format(e), exc_info=True)