Зависает код для обработки данных с вебхуков и добавления их в базу данных 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 и он может зависать при создании подключения в разных потоках, но почему это происходит не сразу а через какое то время?