Увеличьте время до истечения времени ожидания соединения при подключении python cx_Oracle к медленной базе данных

Я использую стандартный оператор cx_Oracle.connect() в python, подобный этому

cnxn = cx_Oracle.connect(user/pwd@connection:port/service)

И я получаю эту ошибку

DatabaseError: ORA-12170: TNS:Connect timeout occurred

Я думаю, это потому, что мы просто переключаемся на базу данных amazon/aws/rds, которая работает очень медленно, а время ожидания соединения истекает слишком быстро. Есть ли простой способ увеличить время ожидания до истечения времени ожидания?

Я пробовал эти решения без успеха до сих пор.

cx_Oracle Время ожидания соединения

https://github.com/oracle/python-cx_Oracle/issues/277

Ответ ниже, но это может быть что угодно. Убедитесь, что вы можете подключиться к feom dbeaver и т. д. Убедитесь, что синтаксис правильный. Иногда cx пытается подключиться с неправильными данными и по-прежнему выдает ошибку тайм-аута.

EoinS 17.05.2022 01:54

Да, я тоже не могу подключиться к dbeaver. Я собираюсь изучить некоторые другие возможности, но мой вопрос остается в силе, как я думаю.

bart cubrich 17.05.2022 17:39
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
2
17
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вероятно, у вас нет тайм-аута с cx_oracle, а скорее с вашим клиентом оракула

Вы можете call_timeout, но обычно для запросов после первоначального подключения.

Вы можете обновить свой файл sqlnet.ora, как показано ниже.

SQLNET.INBOUND_CONNECT_TIMEOUT = 0

Аналогичный вопрос

Документы cx_oralce

Я попробовал это решение, но я не знаю, как проверить, имеет ли оно значение. Это не решило мою проблему.

bart cubrich 17.05.2022 17:28
Ответ принят как подходящий

Если вы используете Oracle Client 19c или более позднюю версию, вы можете добавить время ожидания подключения к строке Easy Connect. См. База данных Oracle 21c Easy Connect Plus:

cnxn = cx_Oracle.connect(user/pwd@connection:port/service?transport_connect_timeout=15)

Существует также вариант connect_timeout, разницу см. в краткой технической ссылке выше.

Единицы в секундах или минутах?

bart cubrich 17.05.2022 17:32

Это не решает проблему, с которой я сталкиваюсь, но отвечает на вопрос, который я задавал. Спасибо.

bart cubrich 17.05.2022 17:40

Единицы - секунды.

Christopher Jones 18.05.2022 00:42

Другие вопросы по теме