Встречается на собеседованиях • сегодня

Что такое on_commit в Django

on_commit в Django — это механизм для отложенного выполнения кода после успешного завершения транзакции. Используется, когда нужно выполнить действие (например, отправку email или вызов внешнего API) только после подтверждения транзакции, чтобы избежать побочных эффектов при откате.

Пример:

python
from django.db import transaction

def create_user(request):
    user = User.objects.create(username='test')
    transaction.on_commit(lambda: send_welcome_email(user.id))
    # Если транзакция успешна — email отправится
    # При откате — код не выполнится

Ключевые моменты:

  • Выполняется только после успешного commit
  • В тестах требует TestCase вместо TransactionTestCase
  • Если транзакции отключены, выполняется сразу
  • Можно использовать как декоратор: @transaction.on_commit

Важно: не используйте для операций, которые должны быть частью транзакции.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы