我正在使用sqlalchemy
和MySQL
,并使用sql表达式执行查询。执行一些查询时,它会超时。我找到了answer,但我不清楚。请问,任何人都可以帮助我吗?
TimeoutError:达到大小5溢出10的QueuePool限制,连接超时,超时30
答案 0 :(得分:52)
每当您在代码中创建新会话时,请务必关闭它。只需致电session.close()
当我收到此错误时,我以为我正在关闭所有会话,但我仔细查看并且有一种新方法我不是。在该方法中关闭会话为我修复了此错误。
答案 1 :(得分:12)
在多线程模式下,如果并发请求数远远大于数据库连接池大小,则会将队列池限制大小为5溢出10达到 error
。试试这个:
engine = create_engine('mysql://', convert_unicode=True,
pool_size=20, max_overflow=100)
to add the pool size
添加:上述方法不正确。实际原因是db连接池已用完,没有其他可用连接。最可能的情况是你错过了释放连接。例如:
@app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove()