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

Зачем нужен on_commit в Django

on_commit в Django используется для выполнения действий только после успешного завершения транзакции. Это полезно, когда нужно, например, отправить email или выполнить фоновую задачу после сохранения данных в БД. Без него такие действия могут выполниться до фиксации транзакции, что приведёт к неожиданным ошибкам.

Пример:

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
  • Если транзакция откатывается (rollback), обработчики не вызываются
  • Можно использовать как декоратор или вызывать напрямую
  • Особенно полезно при работе с celery-тасками или внешними API
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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