Мне не удалось найти документально установленный способ установить тайм-аут для начального соединения, которое действительно работает. Я не спрашиваю о «тайм-ауте запроса», а скорее о тайм-ауте при попытке первоначального подключения в случае, когда сервер БД полностью недоступен или недоступен, и ответа вообще нет. По умолчанию такие соединения кажутся таймаутом через 255 секунд - есть ли способ установить более короткий тайм-аут?Как установить тайм-аут подключения к базе данных для драйвера python/pyodbc/unixODBC/MS ODBC 11 для стека SQL Server/Linux?
Edit: для ясности, я должен повторить стек здесь:
- питона
- pyodbc
- UnixODBC (не iODBC)
- MS ODBC Driver 11 для SQL Server (не FreeTDS)
- Linux
Согласно [этой странице] (http://msdn.microsoft.com/en-us/library/ms130822.aspx) нет, нет способа указать время ожидания соединения в ODBC. Вы можете попробовать поставить 'connect timeout = X' в свой файл' odbc.ini' - он не должен работать, но это может быть недокументированное обходное решение. Если это так, я бы не стал доверять этому в производственной среде. –
Вы можете попробовать выполнить свой собственный тайм-аут для функции подключения, используя [ответ] (http://stackoverflow.com/questions/11901328/how-to-timeout-function-in-python-timeout-less-than-a- второй) здесь. – Bryan
Увы, этот декодер тайм-аута или аналогичный не будет работать, потому что соединение открывается в двоичном MS ODBC-драйвере, вне контроля интерпретатора Python. – CryingCyclops