def run(self): while self.guard: # check for break cur_time = current_time(self.params['db'], self.params['layer_code'], self.parent.time_zone) if self.parent.k_conf.break_params['breakenabled'] == '1': if self.parent.k_conf.break_params['breakfrom'] <= cur_time \ and self.parent.k_conf.break_params['breakto'] >= cur_time \ and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_work: self.parent.k_conf.status_server_queue = krconst.kr_statusserver_break self.parent.log_server(krconst.kr_message_startbreake, krconst.log_info) self.parent.stop_server(is_break=True) self.dbplug = db.QueryDB(self.parent.k_conf) if self.dbplug.connect: self.dbplug.CloseConnection() else: if (self.parent.k_conf.break_params['breakfrom'] > cur_time \ or self.parent.k_conf.break_params['breakto'] < cur_time) \ and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_break: self.parent.log_server(krconst.kr_message_stopbreake, krconst.log_info) self.TryConnect() if self.parent.k_conf.status_server_queue in (krconst.kr_statusserver_work, krconst.kr_statusserver_lostconnect): if self.parent.k_conf.LostConnectDB: self.parent.k_conf.status_server_queue = krconst.kr_statusserver_lostconnect self.parent.stop_server() # try to connect self.TryConnect() #else: # self.guard = False time.sleep(db_conf.kr_guard_timer) if self.guard and self.parent.k_conf.status_server_queue == krconst.kr_statusserver_work: # update status server self.parent.register_status_server('1')
def __init__(self, name_engine_db, group_name, db_user='******', db_pass='******'): self.group_name = None self.db_user = db_user self.db_pass = db_pass self.engine_conf = conf.KConfig(name_engine_db) ''' проверим в каком режиме должен работать сервер-задач ''' self.engine_conf.get_config_file() self.engine_conf.get_config_layer() if self.engine_conf.layers_work: self.engine_conf.get_config() if db_user: self.engine_conf.db_user = db_user if db_pass: self.engine_conf.db_pass = db_pass ''' Подключимся к Engine для получения параметров работы ''' self.__db_engine = db.QueryDB(self.engine_conf) if self.__db_engine.connect: self.group_name = group_name layers_db = self.__layers_get_info(group_name) if layers_db: self.__layers_start(layers_db, self.engine_conf, db_user, db_pass) self.__subscribe_event() else: print c.m_e_layer_get_layers % group_name else: print c.m_e_layer_not_db_engine % self.engine_conf.db_path else: print c.m_e_layer_config
def connect_db_server(self): """ Подключение к БД """ if not self.db: self.db = db.QueryDB(self.k_conf)
def run(self): if not self.dbplug: self.dbplug = db.QueryDB(self.parent.k_conf) if not self.dbplug.connect: ''' Ошибка открытия подключения к БД ''' self.parent.log_server(krconst.kr_message_error_openconnect % self.params['name'], c.log_error) else: self.check_turn()
def connect_other_db(self, other_cfg): other_db = db.QueryDB(other_cfg) if other_db.connect: return other_db else: if other_db.db_message != '': self.log_file(other_db.db_message) self.result['result'] = krconst.plugin_error return None
def TryConnect(self): if not self.guard: return self.dbplug = db.QueryDB(self.parent.k_conf) if self.dbplug.connect: self.dbplug.CloseConnection() self.dbplug = None self.parent.k_conf.status_server_queue = krconst.kr_statusserver_work self.parent.start_server() else: if self.dbplug.db_message != '': self.parent.log_server(self.dbplug.db_message, krconst.log_error)
def engine_get_db(self, name_xml, layer_code=None, sql_text_add=None): """ Получение всех слоев движка @param name_xml: наименвание секции для подключения к Engine @param layer_code: код слоя @param sql_text_add: добавочниый sql текст @return: список слоев """ result = [] self.log_file('Подключение к Engine', terms=1) engine_conf = kc.KConfig(name_xml) engine_conf.get_config_file() engine_conf.get_config_layer() engine_conf.get_config() db_engine = db.QueryDB(engine_conf) # todo Щеглов: нужна правильная проверка на коннект if db_engine.connect: self.log_file( 'Подклчение к Engine прошло успешно', terms=1) # Получаем все слои и дополнительные параметры sql_text = '''select l.code, u.email, LPAD(u.sa_uid, 9, '0') as sa_uid, u.login from engine_layers l left join engine_users u on l.owner_id = u.id_user where l.code <> 'GLOBAL' ''' sql_params = [] if layer_code: sql_text += ' and l.code=? ' sql_params = [layer_code] if sql_text_add: sql_text += sql_text_add res = self.execute_sql(sql_text, sql_params=sql_params, db_local=db_engine, fetch='many') if res['status'] == c.kr_sql_error: self.log_file( 'Ошибка получения всех слоев', terms=1) else: result = res['datalist'] else: self.log_file('Ошибка подключения к Engine', terms=1) return result, engine_conf