Python 在SQLAlchemy中启用usleep()支持

Python 在SQLAlchemy中启用usleep()支持,python,flask,sqlite,flask-sqlalchemy,Python,Flask,Sqlite,Flask Sqlalchemy,如何使Flask SQLAlchemy使用支持usleep()的自编译sqlite 我正在使用Flask 0.10.1和Flask-SQLAlchemy 2.1与Python 3.4.0一起提供运行在Ubuntu 14.04中的微服务。作为我的应用程序的数据库后端,我使用具有默认设置的SQLite: app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/my-database.db' SQLite3的安装版本是3.8.2 在操作我的服务

如何使Flask SQLAlchemy使用支持usleep()的自编译sqlite

我正在使用
Flask 0.10.1
Flask-SQLAlchemy 2.1
Python 3.4.0
一起提供运行在
Ubuntu 14.04
中的微服务。作为我的应用程序的数据库后端,我使用具有默认设置的SQLite:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/my-database.db'
SQLite3的安装版本是3.8.2

在操作我的服务的过程中,我偶尔会看到以下错误:

Traceback (most recent call last): File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context context) File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute cursor.execute(statement, parameters) sqlite3.OperationalError: database is locked 回溯(最近一次呼叫最后一次): 文件“/usr/local/lib/python3.4/dist packages/sqlalchemy/engine/base.py”,第1139行,在执行上下文中 (上下文) 文件“/usr/local/lib/python3.4/dist packages/sqlalchemy/engine/default.py”,第450行,在do_execute中 cursor.execute(语句、参数) sqlite3.0错误:数据库已锁定
微服务在很长一段时间内不保持任何数据库连接,所以起初我觉得这个问题很难解释。我做了一些研究,偶然发现了这篇文章。这表明SQLite可以在不支持
usleep()
的情况下编译,因此可能只会尝试在整秒的时间间隔内锁定数据库。假定SQLite的默认锁定超时为5秒,那么在数据库连接失败之前,我们基本上有5次尝试。还透露HAVE_USLEEP未设置。另外,SQLAlchemy不允许为SQLite设置不同的池超时,因为使用了
NullPool
我想用一个支持usleep()的版本来代替SQLite,以减少锁超时的可能性。如何做到这一点?

如何检查SQLite编译标志?如何使用
PRAGMA编译选项能做到这一点吗?我想出来了!这方面的python是
cur.execute('PRAGMA compile\u options')
。使用pragam的方法(滚动到元数据部分)。不幸的是,它看起来像一个如何检查SQLite编译标志的问题?如何使用
PRAGMA编译选项能做到这一点吗?我想出来了!这方面的python是
cur.execute('PRAGMA compile\u options')
。使用pragam的方法(滚动到元数据部分)。不幸的是,它看起来像一个