Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2018 10:54:20

Olegenok
Зарегистрирован: 2018-08-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите как проверить соединение с ORACLE с помощью Cx.Oracle

Добрый день!

Есть задача настроить соединения с помощью cx.Oracle к 8-ми БД ORACLE для получения данных из них с помощью REST FLASK приложения.

Данные для соединения с базами лежат в словаре. По которому я прохожу в цикле и пытаюсь установить соединения, в случае ошибки выдается DataBaseError (например, я ввожу не правильные данные для коннекта). Но у меня возникает проблема в одной из БД, до которой нет сетевого доступа (не проходит с сервера telnet). Падает приложение на момент поднятия пула к ней и начинает работать цикл заново - все соединения опять создаются. Это видно по логам приложения. Не знаю как правильно обработать ситуацию, когда вообще нет ответа от сервера БД. В except я вообще не попадаю, чтобы выйти из этой итерации цикла.

Пробовала в пуле установить параметр cx_Oracle.SPOOL_ATTRVAL_TIMEDWAIT, вроде как по описанию библиотеки cx_Oracle он как раз нужен для попытки устанавливать соединение в течение некоторого времени. Но ничего не происходит нового.

for idx,word in enumerate(data_conn):

log.info('Trying to establish a connection to DB ' + str(word)+ ‘\n’ )

try:
log.info('Попытка поднять пул')

pool=cx_Oracle.SessionPool(word ,word,word,1,2,1, threaded =True,getmode=cx_Oracle.SPOOL_ATTRVAL_TIMEDWAIT)
log.info('DB '+ str(word)+' the pool is established'+ ‘\n’)

pool_list[word]=pool

connection = pool.acquire()
log.info('DB '+ str(word)+' the connection is established'+ ‘\n’)
connection_list[word]=connection


except cx_Oracle.DatabaseError as excp_db:

log.info('DatabaseError')

pool_list[word]=None
connection_list[word]=None

log.error('DB '+str(word)+' connection error ‘+str(excp_db)+ ’\n')

except:
log.info('Other errors')

pool_list[word]=None
connection_list[word]=None

log.error('DB '+str(word)+' OTHER error ‘+ ’\n')

Офлайн

#2 Авг. 29, 2018 13:51:31

clipper1995
Зарегистрирован: 2018-03-19
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите как проверить соединение с ORACLE с помощью Cx.Oracle

Если не попадаешь в except, нужно сделать raise?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version