我收到内部错误消息:
"TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30"
在线搜索给了teardown_request()解决方案:
@app.teardown_request
def checkin_db(exc):
try:
print "Removing db session."
db.session.remove()
except AttributeError:
pass
现在超时错误消失了。但我完全不理解teardown_request,看起来每次请求后都会调用db.session.remove()吗?还是每个错误?使用此代码是否安全?
答案 0 :(得分:5)
teardown_request
在每个请求结束时注册要调用的函数,无论它是成功还是引发了异常。它是清理请求范围对象(如数据库会话/事务)的好地方。这就是你的代码样本所做的一切。
使用该代码是安全的,{<1>}将在每个请求后调用(即使请求期间发生异常)