Проблема подключения MariaDB с помощью PyMysql в Python - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть 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)
...