Ответ 1
Правильный путь - это один (connect_timeout
вместо connection_timeout
):
create_engine(db_url, connect_args={'connect_timeout': 10})
... и он работает как с Postgres, так и с MySQL
Я пытаюсь выяснить, как установить тайм-аут соединения в 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)
Что мне делать?
Правильный путь - это один (connect_timeout
вместо connection_timeout
):
create_engine(db_url, connect_args={'connect_timeout': 10})
... и он работает как с Postgres, так и с MySQL
В ответ на комментарий ниже @nivhanin, который спрашивает: "Каково значение по умолчанию для переменной connect_timeout (в целом и специфично для базы данных MySQL?"?) (У меня недостаточно репутации, чтобы оставлять комментарии).
Значение по умолчанию для connect_timeout
для Mysql5.7 составляет 10 секунд
Также может быть актуально:
wait_timeout
- значение по умолчанию 28800 секунд (8 часов)interactive_timeout
- значение по умолчанию 28800 секунд (8 часов) Для бэкэнда sqlite
:
create_engine(db_url, connect_args={'connect_timeout': timeout})
будет установлен тайм - аут соединения для timeout
.
Если вы посмотрите на текущий исходный код SQLalchemy, то поймете, что connect_timeout реализован только для MYSQL, а не для Postgres. https://github.com/sqlalchemy/sqlalchemy/search?q=connect_timeout&unscoped_q=connect_timeout
для SQL Server используйте время Remote Query Timeout
:
create_engine(db_url, connect_args={'Remote Query Timeout': 10})
по умолчанию 5 секунд.