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 восстановить соединение? .
- Есть ли способ протестировать этот декоратор?