Unittest для close_old_connections

В текущем проекте у нас возникла проблема с восстановлением соединения с DB, после некоторых проблем с DB pod. Мы нашли решение для этой проблемы:

from functools import wraps

from django import db

def cleanup_db_connections(func):

    @wraps(func)
    def wrapper(*args, **kwargs):
        try:
            r_val = func(*args, **kwargs)
        except db.OperationalError as e:
            db.close_old_connections()
            r_val = func(*args, **kwargs)

        return r_val

    return wrapper

Теперь мы хотим создать unittest для этого декоратора и решения в целом и столкнулись с новой проблемой: Мы можем воспроизвести проблему с подключением (connection.close() или connection.creation.destroy_test_db()), но наше решение, которое работает в приложении, не решает проблему в тесте.

Если я правильно понимаю, это зависит от Django - в unittest он не восстанавливает соединение после закрытия.

У меня два вопроса:

  • Правильно ли я понимаю суть проблемы? Могу ли я заставить Django восстановить соединение?
  • .
  • Есть ли способ протестировать этот декоратор?
Вернуться на верх