Автономный скрипт django получает Потеряно соединение с сервером MySQL во время запроса
У меня есть отдельный скрипт на python (т.е. не часть веб-приложения), который
использует ORM. Я вызываю djago.setup()
, делаю несколько запросов, затем
вызываю функцию, выполнение которой может занять 8 или более часов. Когда
функция возвращается, я хочу сделать еще несколько запросов, но они терпят неудачу с Lost connection to MySQL server during query
. Тайм-аут ожидания моей БД установлен на
8 часов, и если функция возвращается менее чем через 8 часов, я не получаю
ошибку, поэтому я думал, что понял, что происходит.
Но потом я прочитал о CONN_MAX_AGE
, который мы не устанавливаем. Если это не
он должен быть установлен по умолчанию в 0, что должно означать, что он получает новое
соединение для каждого запроса, поэтому мы не должны получать сообщение о потере соединения
сообщение. Не работает ли это при использовании djago.setup()
?
В дальнейшем чтении я видел, что нужно вызывать close_old_connections()
или
connection.close()
перед вызовом долго выполняющейся функции. В чем
разница между этими двумя вариантами и является ли один из них лучшей практикой, чем
чем другая?