Sql Alchemy连接时间Out

Naz*_*san 41 python session timeout sqlalchemy

我使用sqlalchemyMySQL,并执行与SQL表达式查询.执行一些查询时,它会超时.我找到了答案,但我不清楚.请问,任何人都可以帮助我吗?

TimeoutError:达到大小为5的QueuePool限制溢出10,连接超时,超时30

Gre*_*reg 53

每当您在代码中创建新会话时,请确保将其关闭.打电话吧session.close()

当我收到这个错误时,我以为我正在关闭我的所有会话,但我仔细查看并且有一种新的方法,我不是.在该方法中关闭会话为我修复了此错误.

  • 是否绝对有必要结束会议?会话被删除(超出范围)时,不应该是连接回池吗? (13认同)
  • 这是我发现困惑的事情.当会话超出范围时,为什么不调用`close()`? (12认同)
  • 确保在异常触发时也关闭会话.sqlalchemy文档建议使用上下文管理器来处理此问题(以及其他解决方案). (3认同)

Aar*_*har 12

在多线程模式下,如果并发请求数远远大于数据库连接池大小,则会抛出队列池限制,大小为5溢出10 error.试试这个:

engine = create_engine('mysql://', convert_unicode=True, 
pool_size=20, max_overflow=100)

to add the pool size
Run Code Online (Sandbox Code Playgroud)

补充:上面的方法不正确.实际原因是db连接池已用完,没有其他可用连接.最可能的情况是你错过了释放连接.例如:

@app.teardown_appcontext
def shutdown_session(exception=None):
    db_session.remove()
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考:这仅适用于烧瓶. (5认同)