SqlAlchemy连接超时
我正在使用 sqlalchemy
和 MySQL
,通过 SQL 表达式来执行查询。当我执行多个查询时,系统就会超时。我找到了一条 回答,但我不太明白。请问有没有人能帮我一下?
超时错误:队列池的大小限制为 5,溢出 10,连接超时,超时时间 30
2 个回答
13
在多线程模式下,如果你的并发请求数量远远超过数据库连接池的大小,就会出现“队列池限制,大小为5,溢出10”的错误
。你可以试试这个:
engine = create_engine('mysql://', convert_unicode=True,
pool_size=20, max_overflow=100)
to add the pool size
补充说明:上面的方法其实并不正确。真正的原因是数据库连接池已经用完了,没有其他可用的连接。最常见的情况是你没有释放连接。比如:
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()
56
每次在你的代码里创建一个新会话时,记得要把它关闭。只需要调用 session.close()
就可以了。
当我遇到这个错误时,我以为我已经关闭了所有的会话,但仔细一看,发现有一个新方法里我没有关闭会话。在那个方法里关闭会话后,这个错误就解决了。