Зависает код для обработки данных с вебхуков и добавления их в базу данных MySQL

Есть код который обрабатывает вебхуки с сервиса и добавляет данные в базу данных, и бывает что через какое то время (сутки или неделя), код перестает обрабатывать данные (я подозреваю что зависает подключение к базе данных). Код продолжает принимать вебхуки и добавлять их в очередь для дальнейшей обработки, но процесс который должен обрабатывать данные с вебхука зависает.

В код добавил функцию для подключения к базе данных с повторными попытками:

def create_connection(config, attempts=3, delay=2):
    attempt = 1
    # Implement a reconnection routine
    while attempt < attempts + 1:
        try:
            return mysql.connector.connect(**config)
        except (mysql.connector.Error, IOError) as err:
            if attempts is attempt:
                # Attempts to reconnect failed; returning None
                logging.info("Failed to connect, exiting without a connection: %s", err)
                return None
            logging.info(
                "Connection failed: %s. Retrying (%d/%d)...",
                err,
                attempt,
                attempts-1,
            )
            # progressive reconnect delay
            time.sleep(delay ** attempt)
            attempt += 1
    return None

Кратко что происходит в коде: Я создаю очередь с помощью библиотеки Queue и добавляю в нее данные из вебхука. При запуске кода я создаю два потока (библиотка threading) , в первом я обрабатываю сам объект и делаю запрос в базу данных для добавления данных, во втором потоке я обрабатываю историю изменений объекта и так же добавляю данные о истории изменений в базу данных (так же есть очередь для обработки истории, в эту очередь я добавляю данные из первого потока) все подключения я создаю с помощью кода выше и оборачиваю их в with (после завершения добавления данных соединение должно автоматически закрываться).

Возможно проблема в mysql-connector-python и он может зависать при создании подключения в разных потоках, но почему это происходит не сразу а через какое то время?


Ответы (0 шт):