Back to questions
Junior — Middle
77
Какой паттерн декоратора рекомендуется использовать для реализации управления транзакциями?
Answer from AI
sobes.tech AI
Для управления транзакциями в Python часто используют паттерн декоратора, который оборачивает функцию или метод, обеспечивая автоматическое начало, коммит и откат транзакции. Такой декоратор обычно:
- Начинает транзакцию перед вызовом функции.
- Выполняет функцию.
- Если функция завершилась успешно, выполняет коммит.
- Если возникло исключение, выполняет откат транзакции.
Пример простого декоратора для управления транзакциями:
from functools import wraps
def transactional(session):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
result = func(*args, **kwargs)
session.commit()
return result
except Exception:
session.rollback()
raise
return wrapper
return decorator
# Использование:
# @transactional(db_session)
# def some_db_operation():
# ...
Такой подход позволяет централизованно и прозрачно управлять транзакциями, улучшая читаемость и надежность кода.