Мое приложение использует несколько разных БД на одном сервере MSSQL (только для чтения). Моя проблема в том, что одно из двух соединений MSSQL всегда работает нормально, тогда как другое постоянно зависает при первом запросе, пока Flask не отключит соединение. Однако это происходит только в большинстве случаев, когда приложение работает под Apache. Когда я запускаю тестовый сервер фляги, все в порядке.
Я окружил запрос MSSQL сообщениями журнала и поэтому уверен, что ошибка именно в этом запросе. Это простой поиск по первичному ключу, например:
db.query(Record).get(id)
Доступ к базам данных осуществляется через разные механизмы, URI которых отличаются только именем базы данных.
Моя проблема в том, что я понятия не имею, как начать отладку этого. Какие-нибудь советы?
[РЕДАКТИРОВАТЬ] Мне удалось получить ведение журнала SQLAlchemy под Apache. Я установил echo = True в движке, и он вообще ничего не выводит. Просто зависает.
Оказывается, проблема связана не с Apache, а с тайм-аутом соединения. В то время как движок MySQL выдает сообщение об ошибке при попытке выполнить запрос при истечении срока подключения к серверу, движок MSSQL просто молча останавливается навсегда. Добавление pool_recycle = 3600 в create_engine () решило проблему.