django 事务踩坑

 

with transaction.atomic():
    save_id = transaction.savepoint()
        #xx.字段A ormg更新操作
        #提交事务
        transaction.savepoint_commit(save_id)
        #从django中看到 xx.字段A的值已经改变,但是通过三方工具链接到数据库,发现数据其实并未改变,那神魔时候数据库的值会改变?
        print(xx.字段A)#该接口为第三方接口,三方接口会查询xx.字段A,三方反应:xx.字段A的值并没有改变,经测试发现确实提交事务savepoint_commit后也没有改变
        res = requests.post(url=refresh_task_api, json=data)
        return JsonResponse(result) #经过测试我发现,只有在这个请求结束后 数据库的值才会真正改变
        
        
        
        
问题来了:怎么解决那?
with transaction.atomic():
    save_id = transaction.savepoint()
        #xx.字段A ormg更新操作
        #提交事务
        transaction.savepoint_commit(save_id)
        #从django中看到 xx.字段A的值已经改变,但是通过三方工具链接到数据库,发现数据其实并未改变,那神魔时候数据库的值会改变?
        print(xx.字段A)#启动一个子线程调用三方接口去执行
        def async(f):
            def wrapper(*args, **kwargs):
                thr = Thread(target=f, args=args, kwargs=kwargs)
                thr.start()
            return wrapper
        def A(data):
            res = requests.post(url=refresh_task_api, json=data)
        @async
        A()
        return JsonResponse(result) #经过测试我发现,只有在这个请求结束后 数据库的值才会真正改变

 

posted on 2022-04-29 20:35  小胖子方法  阅读(129)  评论(0编辑  收藏  举报

导航