Как установить время ожидания соединения в SQLAlchemy

Я пытаюсь выяснить, как установить тайм-аут соединения в create_engine(), до сих пор я пробовал:

create_engine(url, timeout=10)

TypeError: недопустимый аргумент 'timeout', отправленный в create_engine(), с использованием конфигурации PGDialect_psycopg2/QueuePool/Engine. пожалуйста, проверьте что аргументы ключевого слова подходят для этой комбинации компоненты.

create_engine(url, connection_timeout=10)

TypeError: недопустимый аргумент 'connection_timeout', отправленный в create_engine(), используя конфигурацию PGDialect_psycopg2/QueuePool/двигателя. Убедитесь, что ключевое слово аргументы подходят для этой комбинации компонентов.

create_engine(db_url, connect_args={'timeout': 10})

(psycopg2.OperationalError) неверная опция подключения "Тайм-аут"

create_engine(db_url, connect_args={'connection_timeout': 10})

(psycopg2.OperationalError) неверная опция подключения "Connection_timeout"

create_engine(url, pool_timeout=10)

Что мне делать?

Ответ 1

Правильный путь - это один (connect_timeout вместо connection_timeout):

create_engine(db_url, connect_args={'connect_timeout': 10})

... и он работает как с Postgres, так и с MySQL

Ответ 2

В ответ на комментарий ниже @nivhanin, который спрашивает: "Каково значение по умолчанию для переменной connect_timeout (в целом и специфично для базы данных MySQL?"?) (У меня недостаточно репутации, чтобы оставлять комментарии).

Значение по умолчанию для connect_timeout для Mysql5.7 составляет 10 секунд

Также может быть актуально:

Ответ 3

Для бэкэнда sqlite:

create_engine(db_url, connect_args={'connect_timeout': timeout})

будет установлен тайм - аут соединения для timeout.

Ответ 5

для SQL Server используйте время Remote Query Timeout:

create_engine(db_url, connect_args={'Remote Query Timeout': 10})

по умолчанию 5 секунд.