Flask SQLAlchemy pool_pre_ping в MySQL вообще не работает

#mysql #sqlalchemy #flask-sqlalchemy

#mysql #sqlalchemy #flask-sqlalchemy

Вопрос:

Я пытаюсь разобраться с проблемой «сервер MySQL ушел». Я прочитал эту статью и включил опцию pool_pre_ping в конфигурации моего приложения Flask:

 SQLALCHEMY_DATABASE_URI = 'mysql mysqldb://user:password@localhost/test?unix_socket=/var/run/mysqld/mysqld.sock'
SQLALCHEMY_ENGINE_OPTIONS = {
    'pool_pre_ping': True,
    'pool_recycle': 280,
    'pool_size': 100
}
  

Однако я все еще получаю проблему «Сервер MySQL ушел».

Я установил значения wait_timeout и interactive_timeout равными 30 в конфигурации сервера MySQL и включил общий журнал MySQL. Теперь посмотрите, что каждый запрос к приложению начинается с app, который устанавливает соединение с сервером MySQL. Однако на сервер не выдается ping («ВЫБЕРИТЕ 1»).

Я увеличил wait_timeout до 300 секунд и теперь вижу, что каждый HTTP-запрос (в течение периода ожидания) не вызывает соединений, но также не вызывает и ping. Вместо этого первый запрос к MySQL запрашивает пользователя (вероятно, потому, что функция просмотра требует, чтобы пользователь вошел в систему).

Поэтому я не уверен, что этот параметр pool_pre_ping вообще работает. Это ожидаемое поведение для SQLAlchemy в MySQL?