SqlAlchemy连接超时

46 投票
2 回答
32274 浏览
提问于 2025-04-16 02:00

我正在使用 sqlalchemyMySQL,通过 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() 就可以了。

当我遇到这个错误时,我以为我已经关闭了所有的会话,但仔细一看,发现有一个新方法里我没有关闭会话。在那个方法里关闭会话后,这个错误就解决了。

撰写回答