У меня есть API-интерфейс Flask Python, который подключается к базе данных MariaDB в контейнере Docker , и я подключаюсь к базе данных с помощью PyMysql .
Проблема в том, что мой сервер или приложение закрывает соединение через 10 минут.
Я уже пытался увеличить время ожидания в конфигурационном файле MariaDB и PyMySQL, но безрезультатно. Ошибки следующие:
Ошибка Python:
"OperationalError: (2006, "MySQL server has gone away
(ConnectionResetError(104, 'Connection reset by peer'))")"
Ошибка базы данных:
"[Warning] Aborted connection 9 to db: 'db' user: 'user' host: 'ip'
(Got timeout reading communication packets)"
Кто-нибудь знает, как решить проблему?
Я даю ниже свой конфигурационный файл MariaDB и мой код Python.
Заранее спасибо.
PS: Я уже пытался использовать другой пакет Python для подключения к MariaDB, то есть с помощью SQLAlchemy Flask, но, к сожалению, такое же поведение наблюдается и при подключении к базе данных.
По этой причине я считаю, что проблема не в коде Python, а, возможно, в образе Docker (может быть).
my.cnf
# 7 days = 604800s / 8 hours = 28800s
wait_timeout = 604800
interactive_timeout = 28800
Код Python:
from pymysql import connect
from pymysql.cursors import DictCursor
class MySQLConnection:
def __init__(self, host, port, user, password, schema):
try:
# Connect to the database
self.connection = connect(host=host, port=port,
user=user, password=password,
db=schema, cursorclass=DictCursor,
connect_timeout=50)
# create a cursor object
self.cursor = self.connection.cursor()
print("DB connection was successful!")
except Exception as error:
print("DB connection was failed! \nError: ", error)
exit(1)