Mas*_*ari 4 python sqlalchemy flask flask-sqlalchemy
我的后端配置是:
我有这个错误信息:
TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30
Run Code Online (Sandbox Code Playgroud)
我是否需要显式关闭db.session?会话超出范围时,不应该是连接回池吗?
如果您debug=True在应用程序中使用并且加载了多个错误的页面或API端点,则可能会发生这种情况.
原因是运行应用程序的调试版本会在错误页面中打开实时调试器.这个实时调试器可以处理处理请求的所有资源,以便您可以检查它们.这意味着无法回收数据库连接.
您不应该将调试模式用于应用程序的生产版本(除了这样的问题,这是一个安全风险),并且调试器通常无法正常工作(它设计用于烧瓶测试服务器,而不是gunicorn).因此,在prod解决方案是关闭调试.
如果您在使用调试模式的开发中遇到此问题 - 这是一个限制.你不应该如此努力地击中开发服务器,或者你可以增加限制.请注意,15个连接通常足以在正确回收大量并发请求时提供服务.它只是在调试中才会耗尽.
小智 0
@app.teardown_request
def checkin_db(exc):
try:
g.db.close()
except AttributeError:
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3048 次 |
| 最近记录: |