当前位置: 首页 > news >正文

襄阳建设网站域名做非法网站

襄阳建设网站,域名做非法网站,c 怎么做网站开发,法律顾问 网站 源码1.实现事务的三种方式 1.1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程 DATABASES {default: {#全局开启事务,绑定的是http请求响应整个过程ATOMIC_REQUESTS: True, }} from django.db import transaction# 局部禁用事务 transac…

1.实现事务的三种方式

1.1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程

DATABASES = {'default': {#全局开启事务,绑定的是http请求响应整个过程'ATOMIC_REQUESTS': True, }}
from django.db import transaction# 局部禁用事务
@transaction.non_atomic_requests
def seckill(request):return HttpResponse('秒杀成功')

 1.2 一个视图函数在一个事物中

 # fbv开启from django.db import transaction@transaction.atomicdef seckill(request):return HttpResponse('秒杀成功')
# cbv开启
from django.db import transaction
from rest_framework.views import APIView
class SeckillAPIView(APIView):@transaction.atomicdef post(self, request):pass

1.3 局部使用事务

from django.db import transaction
def seckill(request):with transaction.atomic():     #不用提交事务   with上下文管理器pass  # 都在一个事物中return HttpResponse('秒杀成功')

2 事物的回滚和保存点

# 1 普通事务操作(手动操作)
transaction.atomic()  # 开启事务
transaction.commit()  # 提交事务
transaction.rollback() # 回滚事务# 2 可以使用上下文管理器来控制(自动操作)
with transaction.atomic():  # 自动提交和回滚

保存点

在事务操作中,我们还会经常显式地设置保存点(savepoint)
一旦发生异常或错误,我们使用savepoint_rollback方法让程序回滚到指定的保存点
如果没有问题,就使用savepoint_commit方法提交事务

from .models import Book
from django.db import transaction
def seckill(request):with transaction.atomic():# 设置回滚点,一定要开启事务sid = transaction.savepoint()print(sid)try:book = Book.objects.get(pk=1)book.name = '红楼梦'book.save()except Exception as e:# 如发生异常,回滚到指定地方transaction.savepoint_rollback(sid)print('出异常了,回滚')# 如果没有异常,显式地提交一次事务transaction.savepoint_commit(sid)return HttpResponse('秒杀成功')
transaction.atomic()  # 开启事务
sid = transaction.savepoint() # 设置保存点
transaction.savepoint_rollback(sid) # 回滚到保存点
transaction.savepoint_commit(sid) #提交保存点

3 事务提交后,执行某个回调函数

 有的时候我们希望当前事务提交后立即执行额外的任务,比如客户下订单后立即邮件通知卖家

 案例一

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-1book.save()except Exception as e:# 如发生异常,回滚到指定地方transaction.savepoint_rollback(sid)else:transaction.savepoint_commit(sid)     #提交事务transaction.on_commit(send_email)     #提交事务之后执行send_email函数return HttpResponse('秒杀成功')案例二
transaction.on_commit(lambda: send_sms.delay('1898288322'))
#异步提交,利用celery提交异步任务
http://www.yayakq.cn/news/670619/

相关文章:

  • 免费网站入口网站免费进ps软件聚美优品网站开发时间进度表
  • 建设信用卡银行积分商城网站网站网页设计html
  • 网站开发公司怎么选择一个网站多少钱
  • 商务网站建设过程wordpress 主题评论
  • 深圳市网站建设哪家好北京网站建设的价格天
  • 网站的分页做不好会影响主页pageadmin官网
  • 医疗集团手机网站建设设计本官方网站广告
  • 网站建设学习多少钱云南热搜科技有限责任公司
  • php网站开发打不开闸北区网站建设网页制作
  • jsp网站开发答辩重庆市建设工程交易中心
  • 人才网网站建设方案哈尔滨专利局申请专利地址
  • 网站建设经济可行性报告iis网站伪静态
  • 网站开发ssh东莞网站建设网站
  • 个人餐饮网站模板做美陈网站
  • 网站关键词从哪改深圳建筑公司招聘信息
  • app网站搭建app首页设计模板
  • 潍坊品牌网站建设信息安全公司前10名
  • 东莞如何编写网站建设网站建设项目设计报告
  • 浏览器大全下载seo优化总结
  • 做qq空间网站wordpress全局jquery
  • 西安网站推广优化网站开发过程 知乎
  • 境外网站在国内做镜像重庆品牌网站建设公司哪家好
  • 公司注册网站模板门户网站建设目的
  • 重庆任务盟网站建设电子商务网站开发基本流程图
  • 门户网站开发简历兴远建设网站
  • 做钓鱼网站教程视频网站制作与网站建设pdf
  • 北京网络建站模板佛山网站建设 天博
  • wordpress转移seo是一种利用搜索引擎的
  • net网站开发微信支付app编程
  • 注册网站需要多久一个人免费看的高清电影在线观看