(2006, "сервер MySQL ушел") в WSGI django

У меня MySQL ушел с Django под WSGI. Я нашел записи для этой проблемы в stackru, но ничего с Django специально. Google не помогает, за исключением обходных путей (например, время от времени опрашивая сайт или увеличивая время ожидания базы данных). Ничего определенного. Технически, Django и / или MySQLdb (я использую последнюю версию 1.2.3c1) должны попытаться восстановить соединение, если сервер повесил соединение, но этого не происходит. Как я могу решить эту проблему без обходных путей?

3 ответа

Решение

show variables like 'wait_timeout';

эта настройка отбросит ошибку "mysql ушел"
установите его на очень большое значение, чтобы оно не исчезло
или просто повторить соединение MySQL после определенного периода

Разработчики Django дали один короткий ответ на все подобные вопросы в https://code.djangoproject.com/ticket/21597

  • Разрешение установлено на wontfix

На самом деле это предполагаемое поведение после #15119. Смотрите этот билет для обоснования.

Если вы столкнулись с этой проблемой и не хотите понимать, что происходит, не открывайте этот билет, просто сделайте следующее:

  • РЕКОМЕНДУЕМОЕ РЕШЕНИЕ: закройте соединение с from django.db import connection; connection.close() когда вы знаете, что ваша программа будет простаивать в течение длительного времени.

  • CRAPPY SOLUTION: увеличьте wait_timeout, чтобы он превышал максимальное время простоя вашей программы.

В этом контексте время простоя - это время между двумя последовательными запросами к базе данных.

  • Вы можете создать промежуточное программное обеспечение для ping() соединения MySQL (которое восстановит соединение, если оно истекло) перед обработкой представления.

  • Вы также можете добавить промежуточное программное обеспечение, чтобы перехватить исключение, повторно подключиться и повторить представление (я думаю, что я предпочел бы вышеупомянутое решение как более простое, но оно должно работать технически и быть быстродействующим, предполагая, что таймауты редки. Это также предполагает, что сбойное представление не имеет стороны эффекты, что является желательным свойством, но может быть трудным для выполнения, особенно если вы пишете в файловую систему, а также в БД по вашему мнению.)

Другие вопросы по тегам