Как правильно использовать транзакции.on_commit с задачами Celery в Django?Python

Программы на Python
Ответить
Anonymous
 Как правильно использовать транзакции.on_commit с задачами Celery в Django?

Сообщение Anonymous »

Подход 1: Без транзакции.atomic

Источник: https://adamj.eu/tech/2022/08/22/use-pa ... saction-on -commit/
def order_created(order):
order.status = 'created'
order.save()
transaction.on_commit(
partial(send_order_email.delay, order_id=order.id)
)
< /code>
подход 2: с Transaction.atomic < /h4>
def order_created(order):
with transaction.atomic():
order.status = 'created'
order.save()
transaction.on_commit(
partial(send_order_email.delay, order_id=order.id)
)
< /code>
Какой подход правильный и почему? Операция save () вносит изменения в базу данных, но примеры отличаются от того, необходима ли транзакция. Атомическая необходима. (Atomic_requests = false в настройках)

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-django
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»