gpt4 book ai didi

python - 在事务中强制提交嵌套的 save()

转载 作者:行者123 更新时间:2023-11-28 18:53:45 27 4
gpt4 key购买 nike

我有一个功能可以保存大量模型(一次保存数千个),这需要几分钟时间,所以我写了一个进度条来向用户显示进度。进度条通过轮询 URL(来自 Javascript)并查找 request.session 值来查看第一个调用(正在保存的调用)的状态。

问题是第一个调用是在 @transaction.commit_on_success 装饰器中,因为当我尝试强制 request.session.save() 而不是立即提交时我正在使用数据库支持的 session ,它被附加到正在进行的事务中.这会导致进度条仅在所有保存完成后才更新,从而使其无用。

我的问题是,(我 99.99% 确定我已经知道答案),您能否在事务中提交语句而不做全部。即我只需要提交 request.session.save() 而留下所有其他的..

非常感谢,亚历克斯

最佳答案

不,您的主要保存和状态栏更新都将使用相同的数据库连接进行,因此它们将是同一事务的一部分。

我可以看到两个选项来避免这种情况。

  1. 您可以创建自己的独立数据库连接并使用它保存状态栏更新。

  2. 根本不将状态栏更新保存到数据库中,而是使用缓存来存储它们。只要您不使用数据库缓存后端(理想情况下您会使用 memcached),这就可以正常工作。

我的首选是第二个。您需要深入研究 Django 的内部结构以获得您自己的数据库连接,这样最终可能会变得脆弱和困惑。

关于python - 在事务中强制提交嵌套的 save(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com