【问题标题】:why is django leaving locks behind in mysql?为什么 django 会在 mysql 中留下锁?
【发布时间】:2011-03-06 10:44:46
【问题描述】:

我有一个使用 MySQL 和 InnoDB 引擎进行存储的 Django 应用程序。出于某种原因,Django 有时会保留锁,即使在查询完成后也是如此。 (我可以用 Innotop 看到它们)。

我在我的代码中做的唯一事务处理是我为我处理多表继承的一些 save() 方法指定了 django.db.transaction.commit_on_success。

如果我重新启动 Apache 服务器,锁就会消失。

有人见过这样的吗?我可以写一些会导致这种情况的反模式吗?

【问题讨论】:

    标签: mysql django innodb


    【解决方案1】:

    我唯一能做到这一点的方法是在 Django 中设置与请求/视图无关的“计划”任务。默认的自动提交事务处理系统仅在请求/响应对完成并发送回最终用户时提交事务,因此创建在没有发送请求的情况下运行的 kron 式作业会绕过该机制。

    否则通常很难使其无法释放锁。您确定没有非常长时间运行的代码块(可能依赖于超时的外部服务或类似的东西)将事情捆绑起来?

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2013-03-15
      • 2014-10-18
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多