Django 事务提交后,执行某个回调函数
有的时候我们希望当前事务提交后立即执行额外的任务,比如客户下订单后立即邮件通知卖家
案例一:
def send_email():
print('发送邮件给卖家了')
def seckill(request):
with transaction.atomic():
# 设置回滚点,一定要开启事务
sid = transaction.savepoint()
print(sid)
try:
book = Book.objects.get(pk=1)
book.count = book.count-1
book.save()
except Exception as e:
# 如发生异常,回滚到指定地方
transaction.savepoint_rollback(sid)
else:
transaction.savepoint_commit(sid)
#transaction.on_commit(send_email)
transaction.on_commit(lambda: send_sms.delay('1898288322'))
return HttpResponse('秒杀成功')
案例二:celery中使用
transaction.on_commit(lambda: send_sms.delay('1898288322'))

浙公网安备 33010602011771号