web*_*org 2 python flask flask-sqlalchemy
我收到内部错误消息:
"TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30"
Run Code Online (Sandbox Code Playgroud)
和在线搜索给出了teardown_request()解决方案:
@app.teardown_request
def checkin_db(exc):
try:
print "Removing db session."
db.session.remove()
except AttributeError:
pass
Run Code Online (Sandbox Code Playgroud)
现在超时错误消失了。但是我不完全理解teardown_request,看起来在每个请求之后都会调用db.session.remove()吗?还是每个错误?使用此代码安全吗?
teardown_request在每个请求结束时注册一个要调用的函数,无论该函数成功还是引发异常。这是清理请求作用域对象(如数据库会话/事务)的好地方。这就是您的代码示例所做的全部。
使用该代码是安全的,并且db.session.remove()在每次请求后都会被调用(即使请求期间发生异常)
有关更多信息,请参见Flask回调和错误和Flask.teardown_request。
| 归档时间: |
|
| 查看次数: |
4292 次 |
| 最近记录: |