使用Twisted.enterprise.adbapi处理"数据库已锁定"错误的正确和最佳方法



我使用twisted.enterprise.adbapi与sqlite3数据库适配器和"runInteraction()"。

我一直得到"sqlite3"。OperationalError: database is locked"错误。我理解这个问题,多个线程试图访问数据库,它已经被一个线程锁定,它引发了这个异常。我的问题是什么是标准的/正确的扭曲的方式来处理这个问题?

我已经在这里找到了答案:http://twistedmatrix.com/pipermail/twisted-python/2009-June/019848.html

但是限制连接池到一个连接不减慢整个应用程序的长查询吗?但它仍然不能解决从两个应用程序访问数据库的问题。

你能想到更好的方法吗?

国王的问候,弗洛里安。

但是限制连接池到一个连接不减慢整个应用程序的长查询吗?

SQLite不允许并发连接不是来自相同的过程也不是来自不同的过程;它在数据库中维护一个锁标志,专门防止其他进程在一个进程仍在使用该数据库文件时使用该文件。如果你有一个慢的查询,它会阻塞其他连接,不管它们是否在处理中。

如果这是一个问题,解决方案很简单,不要使用sqlite

最新更新