Python Django运行事务提交太晚

Python Django运行事务提交太晚,python,django,postgresql,Python,Django,Postgresql,期望值:当with块完成时,所有数据库修改都提交到数据库 现实情况:在准备将响应发送到浏览器(序列化)时,异步任务已开始执行。异步任务要求所有修改都已完成,但尚未完成。仅当浏览器收到响应时,才完成对数据库的实际提交 我知道transaction.on_commit(func)hook,但问题是为什么一旦with transaction.atomic()完成,我就不能确定数据库中的数据是否确实更新了?记下ATOMIC\u REQUESTS=False 它是关于Django 1.11.20和post

期望值:当
with
块完成时,所有数据库修改都提交到数据库

现实情况:在准备将响应发送到浏览器(序列化)时,异步任务已开始执行。异步任务要求所有修改都已完成,但尚未完成。仅当浏览器收到响应时,才完成对数据库的实际提交

我知道
transaction.on_commit(func)
hook,但问题是为什么一旦
with transaction.atomic()
完成,我就不能确定数据库中的数据是否确实更新了?记下
ATOMIC\u REQUESTS=False


它是关于Django 1.11.20和postgresql 10的。我不知道它是否与Django 2+

事务相同。atomic`不保证事务运行的时间,它只保证
with
块中的DB操作是原子的。您的期望是正确的。这意味着这里还有其他一些问题,不幸的是,不能从您发布的最小伪代码中确定。
def some_view(request):
    with transaction.atomic():
       data = do_some_stuff(request)
       data2 = do_some_stuff2(request)
    async_task.delay(data, data2)
    return Response({'data': data, 'data2': data2})